Last modified: Wed Mar 23 09:18:07 JST 2005

ImgResize.pm
〜縮小画像(JPEG/PNG/GIF -> JPEG)作成モジュール〜

[目次| ホーム]

ダウンロード

通常は改訂版をダウンロードして下さい。正常に動作しない場合を考慮して 旧版もしばらく残しておきます。改訂版では旧版での使用方法以外にも よりモジュールらしい使い方が出来るようになりました。詳しくは以下の 説明をご覧下さい。旧版の使い方については改訂版の説明の下にそのまま 残してあります。

公開日 ファイル名 ファイルサイズ
2005/03/23 ImgResize.pm(改訂版) 14.3kB
2005/03/23 ImgResize.pm_old(旧版) 7.0kB

説明 (改訂版)

サムネイル画像を作成するモジュール。JPEG/PNG/GIF 画像を読み込んで指定した 大きさの JPEG 画像を作成します。サムネイル画像作成には外部コマンドまたは Image::Magick モジュール (PerlMagick) を利用します。現在のところ利用可能 なのは

  1. Image::Magick モジュール(PerlMagick)
  2. gcon (菅さん作)
  3. convert (ImageMagick)
  4. repng2jpg (菅さん作)
  5. netpbm
  6. GD Perl モジュール

です。何を利用するかはユーザが判断することも自動認識することも可能です。 サムネイル作成の方法を自動認識させて in.jpg という画像を 300x200 で 75% の品質のサムネイル画像 out.jpg を作成したい場合

#!/usr/bin/perl # モジュールのロード use ImgResize; # 初期化 $image = new ImgResize( -1 ); # リサイズ条件の設定 $image->{width} = 300; $image->{height} = 200; $image->{quality} = 75; $image->{ext} = '.jpg'; $image->{in} = 'in.jpg'; $image->{out} = 'out.jpg'; $image->{exif_cut} = 1; # リサイズ $image->resize;

のようにします(下で紹介している旧版の使い方もそのまま利用できます)。 初期化において、引数は -1 から 6 または 99を選ぶことが出来ます。-1 を選択した 場合は、縮小を作成するプログラムを自動的に選択します。1 〜 6 を 指定した場合、上で紹介したプログラムを利用して縮小画像を作成します。 99 を選んだ場合、$image->{jpeg_prog} などで、変換方法を指定する 必要があります。

リサイズ条件の指定可能な変数について以下に紹介をします。ただし、 $image = new ImgResize; を行った後に指定します ($image は自分の環境に合わせて変えてください)。

$image->{width} サムネイルの横幅 正の整数
$image->{height} サムネイルの高さ 正の整数
$image->{quality} サムネイルの品質 1-100
$image->{ext} 元画像の拡張子 . から始めること (例) '.jpg'
$image->{in} 元画像のファイル名
$image->{out} 縮小画像のファイル名
$image->{exif_cut} Exif 情報の除去 1: Exif 情報を除去する 0: 処理せず
$image->{rotate} 画像回転の角度 0, 90, 180, 270, -90 のいずれか
$image->{jpeg_prog} JPEG->JPEG の変換方法
$image->{png_prog} PNG->JPEG の変換方法
$image->{gif_prog} GIF->JPEG の変換方法

$image->{out} までは必ず指定してください。それ以下はオプションです。

変換方法を自分で指定する場合は以下のようにします。例としてconvert コマンドに シャープ化フィルタをつけたい場合、

#!/usr/bin/perl # モジュールのロード use ImgResize; # 初期化 $image = new ImgResize( -1 ); # リサイズ条件の設定 $image->{width} = 300; $image->{height} = 200; $image->{quality} = 75; $image->{ext} = '.jpg'; $image->{in} = 'in.jpg'; $image->{out} = 'out.jpg'; $image->{exif_cut} = 1; $image->{jpeg_prog} = 'convert -geometry %wx%h -quality %q -sharpen 10 %i %o'; $image->{png_prog} = $image->{jpeg_prog}; $image->{gif_prog} = $image->{jpeg_prog}; # リサイズ $image->resize;

のようにします。変換方法には以下のいくつかの変数を利用することができます。

%wサムネイル画像の横幅
%hサムネイル画像の高さ
%qサムネイルの品質
%i元画像のファイル名
%oサムネイル画像のファイル名
\n改行

もし処理が複数のステップに渡る場合、改行位置に \n を記述することにより実現 出来ます。現在のバージョンでは中間ファイルを作成するような処理の場合を 考慮していませんので、ユーザが責任を持って削除するよう注意して下さい。

縮小画像を作成するプログラム名はモジュールの最初の方に定義されています。 これらの値を変更させたい場合、ファイル自体を変更しても構いませんが、

変数 プログラム名 デフォルト
$ImgResize::convert convert /usr/bin/convert
$ImgResize::jpegtopnm jpegtopnm /usr/bin/jpegtopnm
$ImgResize::pnmscale pnmscale /usr/bin/pnmscale
$ImgResize::pngtopnm pngtopnm /usr/bin/pngtopnm
$ImgResize::giftopnm giftopnm /usr/bin/giftopnm
$ImgResize::pnmtojpeg pnmtojpeg /usr/bin/pnmtojpeg
$ImgResize::pamflip pamflip /usr/bin/pamflip
$ImgResize::repng2jpeg repng2jpeg ./repng2jpeg
$ImgResize::gcon gcon ./gcon.exe

また、旧版で紹介している方法で利用をする際に画像を回転させたい場合には $ImgResize::rotate を定義して下さい。

説明 (旧版)

サムネイル画像を作成するモジュール。JPEG/PNG/GIF 画像を読み込んで指定した 大きさの JPEG 画像を作成します。サムネイル画像作成には外部コマンドまたは Image::Magick モジュール (PerlMagick) を利用します。現在のところ利用可能 なのは

  1. Image::Magick モジュール(PerlMagick)
  2. gcon (菅さん作)
  3. convert (ImageMagick)
  4. repng2jpg (菅さん作)
  5. netpbm

です。何を利用するかはユーザが判断することも自動認識することも可能です。 サムネイル作成の方法を自動認識させて in.jpg という画像を 300x200 で 75% の品質のサムネイル画像 out.jpg を作成したい場合

#!/usr/bin/perl use ImgResize; $method = &ImgResize::Init( -1 ); &ImgResize::Resize( $method, 300, 200, 75, '.jpg', 'in.jpg', 'out.jpg', 1 );

のようにします。&ImgResize::Init で利用できるサムネイル作成プログラムを 調べます。引数を -1 とした場合、上の表の順番に利用可能かどうかを調べ、 利用可能なものの番号を返します。ユーザが利用したいプログラムが決まっている 場合には引数に 1 から 5 の値を入れます。それぞれの数字は上の表の番号に 対応しています。

サブルーチン &ImgResize::Resize で実際に画像のリサイズを行います。 省略可能なものも含めて引数は以下の 11個あります。

1利用するサムネイル作成プログラムの番号 1-5 or 99
2サムネイルの横幅 正の整数
3サムネイルの高さ 正の整数
4サムネイルの品質 1-100
5元画像の拡張子 . から始めること (例) '.jpg'
6元画像のファイル名 -
7サムネイル画像のファイル名 -
8Exif 情報の除去 1: Exif 情報を除去 0: 処理をせず
9JPEG -> JPGE 変換方法 省略可
10PNG -> JPGE 変換方法 省略可
11GIF -> JPGE 変換方法 省略可

利用するプログラムによっては元画像の Exif 情報をそのまま付加するものも あります。ファイルサイズをより小さくするため 8番目の引数により Exif 情報を 除去することができます。

1〜5 番以外のプログラムを用いてサムネイル画像を作成することも可能です。 その場合、1番目の引数を 99 とします。そしてサムネイル画像作成方法を 9〜11番目の引数にて指定します。例えば convert コマンドにシャープ化フィルタも つけて実行したい場合は

#!/usr/bin/perl use ImgResize; $jpeg_prog = 'convert -geometry %wx%h -quality %q -sharpen 10 %i %o'; $png_prog = $jpeg_prog; $gif_prog = $jpeg_prog; $method = &ImgResize::Init( 99 ); &ImgResize::Resize( $method, 300, 200, 75, '.jpg', 'in.jpg', 'out.jpg', 1, $jpeg_prog, $png_prog, $gif_prog );

のように処理方法を定義して 9〜11番目の引数にて渡します。処理方法を記述する際、 以下の定義された変数があります。

%wサムネイル画像の横幅
%hサムネイル画像の高さ
%qサムネイルの品質
%i元画像のファイル名
%oサムネイル画像のファイル名
\n改行

もし処理が複数のステップに渡る場合、改行位置に \n を記述することにより実現 出来ます。現在のバージョンでは中間ファイルを作成するような処理の場合を 考慮していませんので、ユーザが責任を持って削除するよう注意して下さい。

サムネイル画像作成に利用するプログラム名がファイルの最初の方に定義されて います。パスが異なる場合は変更してください。もし ImgResize.pm を書き換えたく ないという場合には

#!/usr/bin/perl use ImgResize; $ImgResize::convert = '/usr/X11R6/bin/convert'; ...

のようにすることでも指定可能です。

更新履歴

2005/03/23
2004/07/18
2004/05/03

cachu@cachu.xrea.jp