GDでサムネイルを生成する

まだ整理していません。下書きです。

// 画像フォルダ、※ 相対パス か DOCUMENT_ROOT で書く
$img_dir = '../img/upload/';
echo '
$img_dir=>'.$img_dir;

$name = explode('.', $_GET[imgname]);

$tumbnail_name = $name[0].'_thumbnail.'.$name[1];

$img_path = $img_dir.$tumbnail_name;
echo '
$img_path=>'.$img_path;

// 試験の場合は、前回生成の新画像を削除
// unlink($img_path);

if(!file_exists($img_path)){
echo '
Tumbnailが無いので自動生成します。';

// 注意
// 画像Pathは URLではなく Pathで書く。

// 元画像
$srcname = explode('_thumbnail', $img_path);
$srcname  = $srcname[0].$srcname[1];
echo '

$srcname=>'.$srcname;

$image = ImageCreateFromJPEG($srcname);
echo '
$image=>'.$image;
// 元画像のサイズを取得
$width = ImageSX($image);
$height = ImageSY($image);
echo '
$width=>'.$width;
echo '
$height=>'.$height;

// 縮小した画像のサイズを決める。
$new_width = 250;
$rate = $new_width / $width; //圧縮比
$new_height = $rate * $height;
echo '

$new_width=>'.$new_width;
echo '
$new_height=>'.$new_height;

// 空の画像を作成する。
$new_img = ImageCreateTrueColor($new_width, $new_height);

// 画像を普通にリサイズコピーする場合。
// ImageCopyResized($img_path,$image,0,0,0,0,$new_width,$new_height,$width,$height);
ImageCopyResized($new_img,$image,0,0,0,0,$new_width,$new_height,$width,$height);
// サンプリングしなおす場合。
// ImageCopyResampled($new_img,$image,0,0,0,0,$new_width,$new_height,$width,$height);

// ファイルに保存する場合。
ImageJPEG($new_img, $img_path, 100); //3つ目の引数はクオリティー(0~100)
// ImageGIF($image, $file_path);//環境によっては使えない
// ImagePNG($image, $file_path);
}
echo '<hr /><img src="'.$img_path.'" alt="" />';

※ PHP のGD関数はまだまだ途上のようです。随時使用が変わりますので、人の書いたものを信用せずに、公式サイトをご確認ください。

 

コメントを残す