このブログ、「画像 サムネイル」なんてキーワードで検索する人も多いようだ。で、たまたま画像のサムネイル生成のルーチンを作ったのでのっけておく。
<?php
$filePath=’test.jpg';
list($imW,$imH)=getimagesize($filePath);
//サムネイルの長辺の長さ
$thumbnail=400;
if($imW > $imH){
$newW=$thumbnail +1;
$newH=round($imH * ($thumbnail +1) / $imW);
}else{
$newH=$thumbnail +1;
$newW=round($imH * ($thumbnail +1) / $imH);
}
$imOld=imagecreatefromjpeg($filePath);
$imTmp=imagecreatetruecolor($newW,$newH);
imagealphablending($imTmp, false);
imagecopyresized($imTmp,$imOld,0,0,0,0,$newW,$newH,$imW,$imH);
$imNew=imagecreatetruecolor($newW -1,$newH -1);
imagealphablending($imNew, false);
imagecopyresized($imNew,$imTmp,0,0,0,0,$newW -1,$newH -1,$newW -1,$newH -1);
imagejpeg($imNew);
exit();
?>
いったん画像を縮小して、それから端を1ピクセルカットしている。縮小時に四捨五入とかする関係で、端数の分、端に黒背景がでるので、それをカットしてる。とりあえずいい感じ。