GDでサムネイル作成してみた
ImageMagicは苦手なのでGDでやってみる。
GD インストール
- package install # yum install gd gd-devel php-gd # yum install perl-GD - 設定確認 # vim /etc/php.d/gd.ini extension=gd.so と記載されていればOK - 適用 # apachectl graceful - 確認 $ vim sample.php <?php var_dump(gd_info());
以下のように出力されました
array(12) { ["GD Version"]=> string(26) "bundled (2.1.0 compatible)" ["FreeType Support"]=> bool(true) ["FreeType Linkage"]=> string(13) "with freetype" ["T1Lib Support"]=> bool(true) ["GIF Read Support"]=> bool(true) ["GIF Create Support"]=> bool(true) ["JPEG Support"]=> bool(true) ["PNG Support"]=> bool(true) ["WBMP Support"]=> bool(true) ["XPM Support"]=> bool(true) ["XBM Support"]=> bool(true) ["JIS-mapped Japanese Font Support"]=> bool(false) }
参考: http://d.hatena.ne.jp/yun_kichi/20110309/1299663104
続いてサムネイル作成のための簡易メソッド。
/** * createThumbnailImg * サムネイル生成 (GD利用) * @param char $path ファイルPATH * @param char $file ファイル名(拡張子抜き) * @param char $kind 種別 * @param char $extension 拡張子 * @retrun boolean */ static function createThumbnailImg($path, $file, $kind, $extension) { // ファイル種別毎でbinary読み込み switch ($extension) { case "gif": $image = ImageCreateFromGIF($path); break; case "png": $image = ImageCreateFromPNG($path); break; default : $image = ImageCreateFromJPEG($path); break; } // 画像のサイズを取得 $width = ImageSX($image); //横幅(ピクセル) $height = ImageSY($image); //縦幅(ピクセル) // 縮小した画像のサイズを決める $new_width = 150; $rate = $new_width / $width; //圧縮比 $new_height = $rate * $height; // 空の画像を作成する $new_image = ImageCreateTrueColor($new_width, $new_height); // 画像を普通にリサイズコピーする ImageCopyResized($new_image,$image,0,0,0,0,$new_width,$new_height,$width,$height); // 生成するサムネイル画像のPATHを決定する $thumb_path = Config::get('userimg_rootpath').Config::get('upload_dir_'.$kind)."/".'thumb_'.$file; // サムネイル画像を保存する switch ($extension) { case "gif": $ret = ImageGIF($new_image, $thumb_path); break; case "png": $ret = ImagePNG($new_image, $thumb_path); break; default : $ret = ImageJPEG($new_image, $thumb_path, 80); break; } return $ret; }