[PHP] JPEG/GIF/PNGファイルをリサイズ・トリミングしてローカルに保存する
JPEG/GIF/PNGファイルをリサイズ・トリミングしてローカルに保存する
JPEG/GIF/PNGファイルをリサイズ・トリミングしてローカルに保存する関数を作成した
横長でも縦長でも中央を中心に正方形にトリミングする。
出力ファイルはPNG形式だが
imagepng($out,$dir.”/”.$fileName.”.png”);
の部分をimagegif / imagejpegに変更すればよい
function resizeImage($url,$dir = ".",$fileName = "image"){
list($w,$h,$type) = getimagesize($url);
//出力する画像のサイズ
$thumbW = 300;
$thumbH = 300;
//土台の画像を作る
$thumbnail = imagecreatetruecolor($thumbW, $thumbH);
if($w > $h){
$diff = ($w - $h) * 0.5;
$diffW = $h;
$diffH = $h;
$diffY = 0;
$diffX = $diff;
}elseif($w < $h){
$diff = ($h - $w) * 0.5;
$diffW = $w;
$diffH = $w;
$diffY = $diff;
$diffX = 0;
}elseif($w === $h){
$diffW = $w;
$diffH = $h;
$diffY = 0;
$diffX = 0;
}
switch($type){
case IMAGETYPE_JPEG:
$in = imagecreatefromjpeg($url);
break;
case IMAGETYPE_GIF:
$in = imagecreatefromgif($url);
break;
case IMAGETYPE_PNG:
$in = imagecreatefrompng($url);
break;
}
$out = ImageCreateTrueColor($thumbW , $thumbH);
imagealphablending($out, false);
imagesavealpha($out, true);
ImageCopyResampled($out,$in,0,0,$diffX,$diffY, $thumbW, $thumbH, $diffW, $diffH);
imagepng($out,$dir."/".$fileName.".png");
imagedestroy($out);
imagedestroy($in);
}
処理前:600px x 426px

処理後:300px x 300px
