とあるエンジニアの闇歴史帳

コピペで使える便利Wiki ※現在構築中です。

ユーザ用ツール


サイドバー

言語

サーバ関連

ツール

API

読み物

その他

perl:imagemagick:height_width

画像の横幅・高さを取得する - Perl,ImageMagick

この記事は2007年02月20日に書かれたものです。

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

サンプル(PerlMagick)

;#
;#画像の縦、横のピクセル数を取得する
;#
 
use Image::Magick;
 
#-- オブジェクト作成 --#
my $image = Image::Magick->new;
 
#-- 画像を読込む --#
$image->Read('a.jpg');
 
#-- 種類を取得 --#
my ($width, $height) = $image->Get('width', 'height');

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

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

サンプル(identify)

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

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

関連書籍

failed to fetch data: unkown error

failed to fetch data: unkown error

failed to fetch data: unkown error

failed to fetch data: unkown error

failed to fetch data: unkown error

関連ページ

perl/imagemagick/height_width.txt · 最終更新: 2020/06/23 14:10 (外部編集)