PHPで画像のサムネイルをつくる

このブログではトップページやカテゴリ一覧ページなど、記事に含まれる画像を取り出してサムネイル表示をしているページがあります。それを実現するために「エントリー内の画像をリストアップするプラグイン(MT4専用版) – The blog of H.Fujimoto」と「PHP Thumbnailer Class v2.0」を組み合わせて使っています。

しかし、ちょっとした問題が起こっています。それは通常どおりにアップロードしたりFTPした画像なら思ったようにサムネイル表示できるのですが、携帯から投稿(モブログ)した写真のほうがどうも表示されない様子です。原因はPHP Thumbnailerにあるようで、exif_read_data関連のエラーがでてますが勉強不足でわかりません。

とりあえずわからないことは後回し。というわけで、自分で簡単なスクリプトをつくってそれを徐々に成長させていくことにしました。最終的にはある程度使えるものになるといいな~ってくらいの気持ちでいきます。

// 画像を読み込む
$file_path = $_GET["filename"];
$image = ImageCreateFromJPEG($file_path);

// 画像のサイズを取得
$width = ImageSX($image);//横幅(ピクセル)
$height = ImageSY($image);//縦幅(ピクセル)

// 横幅を基準に縮小後の画像サイズを決める
$new_width = 150;
$rate = $new_width / $width;

//圧縮比
$new_height = $rate * $height;

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

//画像の再サンプル
ImageCopyResampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

//画像を表示
header('Content-type: image/jpeg');
ImageJpeg($new_image, null, 100);

//画像をメモリから開放
imagedestroy ($image);
imagedestroy ($new_image);

上のコードは画像のファイル名(パス)をgetでリクエストして、それを幅150ピクセル(高さは成り行き)のサムネイルに変換して表示するということをしています。これだとjpegファイルしか変換できません。次回はもうちょっと使えるようにします。

たったこれだけなのに結構面倒くさいんですね。

そうのひとりごと

© 2017 PAOLOG