GDを使ってサムネイル画像を生成する~修正版

電脳備忘録
前回GDを使ってサムネイル画像を生成するというエントリーを書いたのですが、よくよく確認してみるとその方法では再構築時に画像が生成されないことがわかりました。いけませんね。とり急ぎ書き直しました。最近ひとつ問題を解決したら2つくらい課題や問題が発生しているような気がします・・・。

追記

2011.11.10

冷静に考えれば生成した後のコードをエディタで開いて見ればすぐ確認できますね。深夜ということもあってかそこまで頭が回らなかったようです。結論から言うと、都度GDでサムネイルを構築してそれを表示していますね。これだと意味が無いような気がするので、もっとスマートな方法を考えたいと思います。トップ画面のサムネイル画像はカスタムフィールドから呼び出しているのですが、カスタムフィールドへの画像登録時にサムネイル画像を生成できるプラグインがあったので、それを利用したらもっと簡単に出来そうなのでそれを試してみようと思います。
まったく参考にならないエントリーを続けて書いてしまいましたが、やったことの履歴としてあえて消さずに残しておこうと思います。まぁあくまで個人用途の備忘録ですから・・・

お約束

一応動作確認していますが、参照は自己責任でお願いします。

やったこと

indexアーカイブに下記のコードを書きました。分けて書いていたのを一つにまとめただけですけどね...。
※テンプレート名・出力ファイル名等は環境ごとに読み替えてください。

‹?php
<MTEntryDataEyecatch_imageAsset>
‹?php
$file_path = "<$MTAssetThumbnailURL$>";//読み込むファイルの指定
$image = ImageCreateFromJPEG($file_path);//ファイルの読み込み
$width = ImageSX($image); //横幅(ピクセル)
$height = ImageSY($image); //縦幅(ピクセル)
$new_width = 200;
$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);// サンプリングしなおす
$thumbnail_path ="/thumbnail/<$MTAssetFileName$>";//ファイルの保存先を指定
ImageJPEG($new_image, $thumbnail_path, 70);//保存する
$image = ImageCreateFromJPEG($thumbnail_path);//保存したファイルの読み込み
$width = ImageSX($image); //横幅(ピクセル)
$height = ImageSY($image); //縦幅(ピクセル)
//画像を表示
print "<img src='../thumbnail/<$MTAssetFileName$>' width='$width' height='$height' alt='<mt:EntryTitle>' title='<mt:EntryTitle>' />";
imagedestroy ($dst_img);//メモリの開放
imagedestroy ($src_img);//メモリの開放
?›

phpはどの時点で動作するのだろう?再構築時によびだされて再構築後は静的な振る舞いをするのかしら?MTタグ埋め込んでそれをもとに出力しているからそう考えてしまうのだけど今まで深く考えたことなかったです。調べてみよう...。

広告

ブログの維持費に充てるでございます・・・。