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

電脳備忘録

本記事のソースコードの利用によって生じた損害について、当方は一切の責任を負いません。ご自身の判断と責任のもとで参照・ご利用ください。

この記事は最終更新から3年以上経過しています。

前回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タグ埋め込んでそれをもとに出力しているからそう考えてしまうのだけど今まで深く考えたことなかったです。調べてみよう...。

0%