内容へ移動
とあるエンジニアの闇歴史帳
コピペで使える便利Wiki ※現在構築中です。
ユーザ用ツール
ログイン
トレース:
perl:imagemagick:height_width
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== 画像の横幅・高さを取得する - Perl,ImageMagick ====== ~~socialite~~ <note important>この記事は2007年02月20日に書かれたものです。</note> 画像の縦横のピクセル数をそれぞれ取得したい。 あらかじめサイズが分かっていない場合など、縦横比を維持したまま拡大・縮小を行うには現在のサイズを取得するところから処理を書き始める必要がある。 ===== サンプル(PerlMagick) ===== <code perl> ;# ;#画像の縦、横のピクセル数を取得する ;# use Image::Magick; #-- オブジェクト作成 --# my $image = Image::Magick->new; #-- 画像を読込む --# $image->Read('a.jpg'); #-- 種類を取得 --# my ($width, $height) = $image->Get('width', 'height'); </code> ImageMagick(PerlMagick)は巨大なファイルを扱うのには向いていない。一度内部でビットマップに変換し、処理を行うことから、数千ピクセルの画像を開くと数百メガのメモリを喰うこともざらである(使用するメモリを制限することもできる)。 若干反則気味ではあるが、ImageMagickをインストールすると自動的に入る「identify」を次のように、コマンドライン経由で利用するのも一つの手である。巨大なファイルの処理を行う時はこれらも検討されたい。 ===== サンプル(identify) ===== <code perl> my $format = `identify $file`; my ( $name, $format, $pix_size ) = (split(/ /, $format))[0,1,2]; my ( $width, $height) = split(/x/, $pix_size); </code> 本当にどうしようもない場合、それほど難しい処理でないなら、Cでlibjpegなどのライブラリを用いる...といった方法もあるが結構めんどい。上記のような回避策をまずは試して解決するならそれが一番かも。 ===== 関連書籍 ===== {{amazon>jp:4844326473}} <html><p style="clear:both"></p></html> {{amazon>jp:4797344377}} <html><p style="clear:both"></p></html> {{amazon>jp:4873114136}} <html><p style="clear:both"></p></html> {{amazon>jp:4797336803}} <html><p style="clear:both"></p></html> {{amazon>jp:4798139815}} <html><p style="clear:both"></p></html> {{tag>CGI・Perl例文集 Perl ImageMagick PerlMagick }} ~~socialite~~
関連ページ
perl/imagemagick/height_width.txt
· 最終更新: 2020/06/23 14:10 (外部編集)
ページ用ツール
文書の表示
バックリンク
文書の先頭へ