<?php
/***
* サムネイルカッター by ToR
* ※PHPオプションにGDが必要です(無料鯖ではほぼ無理
**/

$img_dir   "./img/";            //画像一覧ディレクトリ
$thumb_dir "./thumb/";        //サムネイル保存ディレクトリ
$ext       ".+\.png$|.+\.jpe?g$";    //拡張子,GIFはGDのバージョンにより無理
$width     110;            //出力画像幅
$height    85;            //出力画像高さ
$cols      4;                //1行に表示する画像数
$page_def  20;            //1ページに表示する画像数

if ($_GET["cmd"]=="min" && isset($_GET["pic"])) {
  
$fname $img_dir.$_GET["pic"];
  if (!
file_exists($fname)) {
    
$im_out ImageCreate($width$height);
    
$bgc ImageColorAllocate($im_out0xff0xff0xff);
    
ImageFilledRectangle($im_out00$width$height$bgc);
  }
  
// 画像の幅と高さとタイプを取得
  
$size GetImageSize($fname);
  switch (
$size[2]) {
    case 
$im_in ImageCreateFromGIF($fname);  break;
    case 
$im_in ImageCreateFromJPEG($fname); break;
    case 
$im_in ImageCreateFromPNG($fname);  break;
  }
  
// リサイズ
  
if ($size[0] > $width || $size[1] >$height) {
    
$key_w $width $size[0];
    
$key_h $height $size[1];
    (
$key_w $key_h) ? $keys $key_w $keys $key_h;

    
$out_w $size[0] * $keys;
    
$out_h $size[1] * $keys;
  } else {
    
$out_w $size[0];
    
$out_h $size[1];
  }
  
// 出力画像(サムネイル)のイメージを作成
  
$im_out ImageCreate($out_w$out_h);
  
// 元画像を縦横とも コピーします。
  
ImageCopyResized($im_out$im_in0000$out_w$out_h$size[0], $size[1]);
  
// サムネイル画像をブラウザに出力、保存
  
switch ($size[2]) {
    case 
ImageGIF($im_out); ImageGIF($im_out$thumb_dir.$_GET["pic"]);  break;
    case 
ImageJPEG($im_out);ImageJPEG($im_out$thumb_dir.$_GET["pic"]); break;
    case 
ImagePNG($im_out); ImagePNG($im_out$thumb_dir.$_GET["pic"]);  break;
  }
  
// 作成したイメージを破棄
  
ImageDestroy($im_in);
  
ImageDestroy($im_out);
  exit;
}
// ディレクトリ一覧取得、ソート
$d dir($img_dir);
while (
$ent $d->read()) {
  if (
eregi($ext$ent)) {
    
$files[] = $ent;
  }
}
$d->close();
// ソート
rsort($files);

//ヘッダHTML
echo <<<HEAD
<html>
<body bgcolor=#ffffee><center><b>サムネイル一覧</b><br><br>
<table border="0" cellpadding="2">
<tr>
HEAD;

//print_r($files);
$maxs count($files)-1;
$ends $start+$page_def-1;
$counter 0;
while (list(
$line$filename) = each($files)) {
  if ((
$line >= $start) && ($line <= $ends)) {
    
$image rawurlencode($filename);
    
// サムネイルがある時はサムネイルへのリンク、それ以外はサムネイル表示、作成
    
if (file_exists($thumb_dir.$image)) $piclink $thumb_dir.$image;
    else 
$piclink $_SERVER["PHP_SELF"]."?cmd=min&pic=".$image;
//メインHTML
    
echo <<<EOD
<td align=center><a href="$img_dir$image" target=_blank>
<img src="
$piclink" border="0"><br>$filename</a></td>
EOD;
    
$counter++;
    if ((((
$counter) % $cols) == 0)) echo "</tr><tr>";
  }
}
echo 
"</tr></table><br>";

//ページリンク
if ($_GET["start"] > 0) {
  
$prevstart $_GET["start"] - $page_def;
  echo 
"<a href=\"$_SERVER[PHP_SELF]?start=$prevstart\">&lt;&lt;前へ</a> ";
}
if (
$ends $maxs) {
  
$nextstart $ends+1;
  echo 
" <a href=\"$_SERVER[PHP_SELF]?start=$nextstart\">次へ&gt;&gt;</a>";
}

echo 
"</center><div align=right><a href=http://php.s3.to>レッツPHP!</a> <a href=sam.phps>ソース</a></div>
</body></html>"
;
?>