複数の画像ファイルをリサイズしてHTMLにするCGI:resize5

使い方の概要)

まずあるディレクトリへ画像(JPGファイル)を Winscpやftpなどのファイル転送ツールを使って転送しておきます。

clipboard01.jpg 転送したディレクトリ、格納するディレクトリ、リサイズしたいサイズを入力します。

clipboard03.jpg コンバート終了結果です。続いて回転したいファイルがある場合は次の画面に進んでください。ない場合はこのHTMLをコピー&ペーストしてお使い下さい。

clipboard04.jpg まず上の回転のところにさきほどの格納したディレクトリを指定します。


clipboard05.jpg 画像が表示されるので、回転したい画像のラジオボタンを回転方向したい方向により LEFTかRIGHTを選びます。

clipboard06.jpg コンバート終了です。必ず元の画面に戻ってください。

clipboard07.jpg 下の方の、再構成するディレクトリを指定してください。

clipboard08.jpg インデックスHTMLが構成されます。このHTMLをコピー&ペーストしてお使い下さい。

clipboard09.jpg generated pageはこのような表示になります。


このあとREADME.TXTが続きます。

image upload utility: resize&rotation
programmed by T.Noma
04/14/2004: 1st release
07/22/2004: resize & rotation
----------------------------------------------------------------------
・概要
たくさん撮影したデジカメ画像を一度にftp/scpなどでサーバーにアップロードし、cgiを使ってサムネイル画像(小さな画像)、スクリーンネイル画像(クリックしてアップにする画像)を作成し、同時にHTMLを出力する。
また「回転(左回転、右回転)」の指定、およびインデックスHTMLを再構成するための機能が追加された。

・インストール方法
- .cgiが動作するディレクトリに展開して下さい。もしくは .htaccessを設定してディレクトリでCGIが動作するように設定してください。
- *.plと*.cgiに実行ビットが立っていることを確認してください。
- .htaccessを設定して、他人からのアクセスを禁止することをお勧めします。

・必須設定項目
env.pl

;# common variables
$OUTDIR="/var/www/html/tnoma/blog/archives"; #デフォルトの画像書き出しを行う親ディレクトリを指定します
$OUTURL="http://blog.group4.co.jp/tnoma/blog/archives"; # $OUTDIRのURL表記を指定します
$INSTALLDIR="/var/www/html/tnoma/resize5"; # このCGIスクリプトを配置するディレクトリを指定します

;# common external program
$IDENTIFY="/usr/X11R6/bin/identify"; # ImageMagickに入っている identifyへのフルパスを記述します
$CONVERT="/usr/X11R6/bin/convert"; # 同じく convertへのフルパスを記述します

;# variables for resize.pl
$TMPDIR="/home/apachetmp"; # 書き込み可能なテンポラリディレクトリを指定します

(この行以降は通常変更の必要なし)

$ORGDIR="/home/tnoma/work/resize"; # CGIからの呼び出しでは使われないため、変更の必要はありません。

;# variables for rotate.pl
$JPGEXT="jpg"; # 検索する拡張子を指定します。通常は変更しません
$ORGDIR="20040424/s"; # CGIからの呼び出しでは使われないため、変更の必要はありません。

;# variables for rotate2.pl
$TMPJPGFILE="$TMPDIR/tmp.jpg"; # 作業用jpgファイル。変更の必要はありません。

;# variables for identify.pl
$TMPFILE="$TMPDIR/jpglist.txt"; #作業用jpg画像リスト格納用ファイル。変更の必要はありません。


・オプション設定項目(通常は変更する必要はありません)

resize.pl 18行目以降

$JPGEXT="JPG"; # extension of jpeg files
元ディレクトリでのjpegファイルの拡張子を指定します。大文字、小文字の判定はOS依存です。

# output text(HTML)
$COLUMN=3; # put cr (br) code every $COLUMN images
画像N枚で改行コードを入れます。

$HTMLMODE=0; #1:ON 0:OFF
HTMLMODEの場合は改行コードとして brを入れます。

・index.htmlの修正

index.htmlのstyles.cssで参照される、logo_small.gifはmovabletypeの中にある画像ファイルをコピーして持って来ると良いです。今回よりサンプル画像を入れました。

19行目の"/home/apachetmp/org/"はオリジナル画像をアップロードするディレクトリを指定しておくと便利です。

23行目の"/var/www/html/tnoma/blog/archives/"には、$OUTDIRと同じディレクトリを書いておくといいですが、動作には影響しません。

・使い方
<画像のリサイズ>

まず、ftpやscpなどのツールを使い、サーバー上に画像ファイルを転送します。
西暦を含む日付の名前をつけたディレクトリ(元ディレクトリ)を作成して、そこへ画像をおいておくと便利です。

index.htmlをアクセスします。

「画像ファイルをアップロードしたディレクトリを指定してください」に元ディレクトリを指定します。最後にスラッシュ(/)は付けてはいけません。

「格納するディレクトリパスを指定してください」には通常書き出しをしたいサブディレクトリを指定します。西暦を含む日付をお勧めします。最後にスラッシュ(/)は付けてはいけません。

「決定」ボタンを押すと、途中経過を表示しながら画像のリサイズ処理を行います。終了すると generated page(指定した書き出しディレクトリ/index.html)へのリンクと、textareaにHTMLが表示されます。

サムネイル画像は「書き出しディレクトリ/s/*.jpg」、スクリーンネイル画像は「書き出しディレクトリ/m/*.jpg」へ格納されています。

書き出し画像のインデックスHTMLは「格納するディレクトリパス/index.html」へ出力されます。

<画像の回転、インデックス再構成>
rotate.htmlをアクセスします。

回転するディレクトリを指定するか、インデックスを再構成するディレクトリを指定して先へ進みます。

画像の左回転、右回転を行います。回転したい画像のラジオボタンを LEFT、またはRIGHTを選択すると回転します。その後は下記のインデックスの再構成を必ず行い、新しく作ったインデックスHTMLをご利用下さい。

回転を行った場合は画像の縦横のサイズが当然入れ替わります。そのため画像ファイルのヘッダを読み、適正なインデックスHTMLを生成し、「格納するディレクトリパス/index2.html」へ出力します。


・動作の仕組み


元ディレクトリ内のjpegファイル(実際には *.JPG)をlsを使いリストし、一つ一つ convertを使ってサムネイルとスクリーンネイル画像にリサイズします。同時にHTMLをindex.htmlに出力しています。

終了後、index.htmlへのリンクとHTMLの表示を行います。

・convertのオプション -resizeについて
色々な解像度に対応するため、スクリーンネール、サムネールを-sizeから -resizeに変更しました。
必ず整数分の一にするという方は、resize.plの101, 102行目のオプションを -resizeから -sizeへと変更しても良いです。

(man convertより)
To make a thumbnail of a JPEG image, use:

convert -size 120x120 cockatoo.jpg -resize 120x120
+profile '*' thumbnail.jpg

In this example, "-size 120x120" gives a hint to the JPEG decoder that
the image is going to be downscaled to 120x120, allowing it to run
faster by avoiding returning a full-resolution image. The "-resize
120x120" specifies the desired dimensions of the output image. It will
be scaled so its largest dimension is 120 pixels. The "+profile '*'"
removes any ICM, EXIF, IPTC, or other profiles that might be present in
the input and aren't needed in the thumbnail.

・動作確認環境
RedHat8
perl 5.8.0
apache 2.0
ImageMagick 5.4.7

・動かない場合

- CGIが動作するようにapacheを設定してください。
- CGIがディレクトリに書き込み権限があるか確認してください。
- resize.plは単体でも動作するので、 resize.pl -hのusageを参考に動作確認をして下さい。
- convertが動作するか確認してください。
- セキュリティの観点からCGIを動作させるディレクトリを.htaccessでアクセス制限することをお勧めします。

・連絡先
T.Noma
http://blog.group4.co.jp/tnoma/blog/

・動作無保証
このプログラム及びパッケージの動作は保証いたしません。また動作させたことによる不利益、損害が起きた場合でもその責任は負いません。

・改変、再配布について
改変、再配布は自由に行って構いませんが、その場合は必ず上記のblog urlを表記して下さい。

----------------------------------------------------------------------
[EOF]