« 画像の種類を判定する | メイン | 画像形式を変換する (ベリー簡単!) »

カテゴリー:ImageMagick 

画像の横幅、高さを取得する

このエントリーを含むはてなブックマーク  livedoorクリップ  画像の横幅、高さを取得するをdel.icio.usに追加  画像の横幅、高さを取得するをYahoo!ブックマークに追加  画像の横幅、高さを取得するをニフティクリップに追加

画像の縦横のピクセル数をそれぞれ取得したい。
あらかじめサイズが分かっていない場合など、縦横比を維持したまま拡大・縮小を行うには現在のサイズを取得するところから処理を書き始める必要がある。

;#
;#画像の縦、横のピクセル数を取得する
;#

use Image::Magick;

#-- オブジェクト作成 --#
my $image = Image::Magick->new;

#-- 画像を読込む --#
$image->Read('a.jpg');

#-- 種類を取得 --#
my ($width, $height) = $image->Get('width', 'height');

ImageMagick(PerlMagick)は巨大なファイルを扱うのには向いていない。一度内部でビットマップに変換し、処理を行うことから、数千ピクセルの画像を開くと数百メガのメモリを喰うこともざらである(使用するメモリを制限することもできる)。

若干反則気味ではあるが、ImageMagickをインストールすると自動的に入る「identify」を次のように、コマンドライン経由で利用するのも一つの手である。巨大なファイルの処理を行う時はこれらも検討されたい。

my $format = `identify $file`;
my ( $name, $format, $pix_size ) = (split(/ /, $format))[0,1,2];
my ( $width, $height) = split(/x/, $pix_size);

本当にどうしようもない場合、それほど難しい処理でないなら、Cでlibjpegなどのライブラリを用いる...といった方法もあるが結構めんどい。上記のような回避策をまずは試して解決するならそれが一番かも。




トラックバック

このエントリーのトラックバックURL:
http://katsubemakito.net/mt/mt-tb.cgi/578






クリエイティブ・コモンズ・ライセンス
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.