中級プログラマの自宅でPHP ブログ

自宅用ポータルシステム「MyHome Portal」をオープンソースで公開。MyHome Portalの説明とエンハンス情報。

画像ギャラリのサーバー側処理補足

MyHome Portal Ver.3.17で、JavaScriptライブラリ「Merging Image Boxes with jQuery」を利用した画像ギャラリー「ギャラリ5」を追加しました。

http://ok2nd.blog87.fc2.com/blog-entry-255.html

boxes2.jpg

この機能追加について補足事項を書いておきます。

「Merging Image Boxes」は、1枚の画像をクローズアップした時の画像サイズが固定値前提になっています。サムネイル画像の6倍、例えばサムネイルの横幅が125pxの場合750pxでないときれいに表示できません。

そのため、MyHome Portalのギャラリ5では、サーバー側で、それにあわせて画像をリサイズしています。(縦長画像の考慮はしていません。動画のサムネイル静止画も未対応です。)

画像のリサイズには、IrfanViewを使用しています。リサイズ画像はテンポラリとして作成していますが、IrfanViewがリサイズ先のファイル名の拡張子がjpgでないと動作しないため、tempnam()を使えません。そこで、定義ファイルでERROR_LOG_DIRで指定されたディレクトリに一時的にファイルを作成しています。

3.17に不具合があったため、以下の処理は3.18で使わない仕様に変更しました。(2/7追記)

ただ、このファイルが

  fpassthru($fp);

  @fclose($fp);

をした後でもunlink()で消えないケースが発生するため、確実に消すため次の処理を入れています。

 if ($temp_file) {

    while (!unlink($temp_file)){

      usleep(10000);

    };

 }