PHPで画像をリサイズする
サムネイル作成apiを作った。
よく見るのは「画像up時にサムネイルも作成しちゃう」ていう奴なんだけど、それだとその後違うサイズのサムネイルが必要になったときにめんどくさい。なので、常に「指定した画像の指定したサイズのサムネイルを要求する、なければ作る」的なapiを作った。
ちょろっと検索したけどいいのがないのでしょうがないので書いた。
function resize($srcfile, $dscfile, $w, $h) { list($sw, $sh) = getimagesize($srcfile); $ratio = ($rw = $w ? $w / $sw : 1) > ($rh = $h ? $h / $sh : 1) ? $rh : $rw; if ($ratio >= 1) { return false; } $nw = $sw * $ratio; $nh = $sh * $ratio; $src = imagecreatefromjpeg($srcfile); $dsc = imagecreatetruecolor($nw, $nh); imagecopyresampled($dsc, $src, 0, 0, 0, 0, $nw, $nh, $sw, $sh); imagejpeg($dsc, $dscfile, 70); imagedestroy($src); imagedestroy($dsc); return true; }
もうちょっと頑張ればもっと短くなるけどあんまりエクストリームなのもなんだしこれくらいで許してやるか