resizeimage.inc.php

サマリイメージファイルをリサイズしてjpegで出力する
リビジョン1.21
対応バージョン1.4.7
投稿者ぃぉぃぉ
投稿日2007-07-29 (日) 01:28:06

注意事項

readableの確認忘れてました。認証の必要なページでも無条件に表示できてしまいます。いずれ修正したいと思います。 -- ぃぉぃぉ 2007-07-30 (月) 02:12:04 Ver.1.1で対応済み。

背景

サムネール出力のために作りました。
デジカメ写真をattachrefやaddlineでガンガン貼り付けして、知人に公開していたんですが、refの縮小表示だと、でっかいファイルをそのまま読み込むため、重たいっっ。デジカメの写真、1枚数MByteが何十枚もあると....。ってことで、縮小してから出力したい、と。
当然サーバーに負荷がかかります。大勢が閲覧しに来るページだとやばいかも。とはいえ、refで大きなファイルを無駄に送りまくるよりは縮小してから送った方がましかな。CPUの性能次第ですね。1.12でキャッシュ作成機能追加。キャッシュが存在するとイメージを生成せずにそのキャッシュを出力します。

仕様

  • プラグインタイプ:添付ファイルをリサイズしてjpeg形式で出力します。
    ?plugin=resizeimage&page=ページ名&image=添付ファイル名&w=幅&h=高さ&q=50&k
  • 引数
    • page ページ名(エンコード後)
    • image 添付ファイル名(エンコード後)
    • w(またはwidth) 横幅。デフォルト160
    • h(またはheight) 高さ。デフォルト120
    • q(またはquality) jpeg圧縮度(0(低品質)~100(高品質))
    • k(またはkeepaspectratioまたはkeepaspect) 値は無為。この引数が存在すると、元ファイルのアスペクト比をキープして、指定サイズに収まるようにリサイズ。
  • inlineタイプ(ver. 1.20以降)
    • 書式 &resizeimage(string file, [int width, [int height, [int quality[, boolean keepaspectratio]]]]);
    • fileには相対指定等可能。

インストール

ダウンロード

resizeimage.inc.php ver. 1.21
resizeimage.inc.phpとリネームして、pluginフォルダへ入れて下さい。

GDライブラリ有効化

  • php.iniの
    extension=php_gd2.dll
    行がコメントアウトされていたら、コメントアウトをやめて有効にする。

おまけ

  • refのインライン表示からresizeimageを呼び出すようにしたもの。

ライセンス

GPL2(よく分かってませんが...)

使用例

jpg

  • &ref index.php?plugin=attach&pcmd=open&refer=PukiWiki%2Fresizeimage.inc.php&file=test.jpg
  • こんな感じで縮小表示を呼び出せます。
    http://ioio.is.land.to/PukiWiki/index.php?plugin=resizeimage&page=PukiWiki%2Fresizeimage.inc.php&w=200&h=200&q=10&image=test.jpg
    http://ioio.is.land.to/PukiWiki/index.php?plugin=resizeimage&page=PukiWiki%2Fresizeimage.inc.php&w=200&h=200&q=10&image=test.jpg
  • 高画質勝手に追加しました。
    http://ioio.is.land.to/PukiWiki/index.php?plugin=resizeimage&page=PukiWiki%2Fresizeimage.inc.php&w=200&h=200&q=90&image=test.jpg
    http://ioio.is.land.to/PukiWiki/index.php?plugin=resizeimage&page=PukiWiki%2Fresizeimage.inc.php&w=200&h=200&q=90&image=test.jpg

gif

  • &ref index.php?plugin=attach&pcmd=open&refer=PukiWiki%2Fresizeimage.inc.php&file=test.gif
  • resizeimage
    http://ioio.is.land.to/PukiWiki/index.php?plugin=resizeimage&page=PukiWiki%2Fresizeimage.inc.php&w=200&h=300&q=50&image=test.gif
    http://ioio.is.land.to/PukiWiki/index.php?plugin=resizeimage&page=PukiWiki%2Fresizeimage.inc.php&w=200&h=300&q=50&image=test.gif

png

  • &ref index.php?plugin=attach&pcmd=open&refer=PukiWiki%2Fresizeimage.inc.php&file=test.png
  • resizeimage
    http://ioio.is.land.to/PukiWiki/index.php?plugin=resizeimage&page=PukiWiki%2Fresizeimage.inc.php&w=200&h=200&k&q=100&image=test.png
    http://ioio.is.land.to/PukiWiki/index.php?plugin=resizeimage&page=PukiWiki%2Fresizeimage.inc.php&w=200&h=200&k&q=100&image=test.png

TODO

  • gdライブラリが無い(エラー表示のjpegが生成できない)場合はテキストでエラーを出力(dieさせる)必要がある。

Version history

  • 1.0 2007-07-29
    • 新規作成
  • 1.1 2007-07-30
    • check_readable処理追加
    • テキストをjpegで出力する部分を関数化。
  • 1.11 2007-07-30
    • デフォルトサイズが0になっていたので修正
    • ゴミコード削除。(BMPが使えなくて断念したときのコードが残っていたりした^^;)
    • エラー処理追加
      • サイズ指定が0
      • gd_infoのエラー抑制。
        gdライブラリが無効の場合、gd_infoのエラー抑制をしても、死んでしまう...。
        検証コード
        $gdinfo = @gd_info();
        echo 'test';
        exit;
        このコードでgdライブラリ無効の場合でも、文字列「test」が出力されても良いはずだが...(Windows2000 php5.2.3)
  • 1.12 2007-11-20
    • キャッシュ作成機能追加
    • DATA_HOME . 'thumb/'(RESIZEIMAGE_CACHE_DIRで定義)にキャッシュファイルを作成する。
      • .htaccess等でアクセス制限をかけた方が良いでしょう。もしくはhttp://...で直接は見えない場所に設定すること。
    • "元のファイル名_幅_高さ_品質"というファイル名にて保存される。
    • キャッシュ作成に失敗すると、前のバージョン同様毎回jpegを生成する。その場合エラー出力をしないので、フォルダ作成を忘れると気付かないかも。ファイル名がOS制限を超えた場合はこれで救われると思う。(未検証)
  • 1.13 2007-11-20
    • 不具合修正
    • キャッシュ使用時に作成していない変数を解放しようとしていたのを修正^^;。
  • 1.20 2007-11-21
  • 1.21 2007-11-22
    • 細かいバグ修正

感想

2007-11-27 IEの縮小表示が酷いと思っておりましたが(Operaは綺麗ですね)、わざわざ自分でサムネールとリンクを作るのも面倒くさく、ほったらかしにしておりましたが、このプラグインに出会えて感謝です。ありがたく使わせていただきます。ただ、プラグインを使ってみて、元画像の縮小表示に実はメリットもあったことがわかりました。印刷されるときには、高解像度で印刷してくれることです。画面表示のときは、サムネール表示で軽く、美しく表示され、印刷時は元画像に展開されるよう切り替えてくれると、私にはベストのようです。2つ画像を読み込んで、CSSで表示/非表示を切り替えればできるのでしょうか(結局大きい画像が読み込まれることになるか実験してみます)。

ref.inc.phpですが、$script error already init ってでてエラーになります。

バグ

PHP5.3ではGDライブラリの仕様変更でjpgがリサイズできない問題があります。http://pukiowikio.sourceforge.jp/index.php?Develop%2FBugTrack1%2F39


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-11-02 (火) 13:46:30
Site admin: PukiWiki Development Team

PukiWiki 1.5.1+ © 2001-2016 PukiWiki Development Team. Powered by PHP 5.6.36-0+deb8u1. HTML convert time: 0.364 sec.

OSDN