perlで、画像ファイルのサイズ(ピクセル)を取得する
Flash上にgifファイルのようなビットマップデータ(ラスタデータ)を表示させたい場合、縦横いずれかでも2880ピクセルまでと制限されています。
Flash Professional チュートリアル&記事
メモ : Flash Player では、ビットマップの最大サイズは幅、高さいずれも 2880 ピクセルに制限されています。この制約よりも大きい BitmapData インスタンスを作成しようとすると、ビットマップは作成されません。これは、クライアントの RAM を使い切るような Flash ムービーを作成できないようにするために設定されています。2880 × 2880 ピクセルのビットマップには、約 32 MB 程度の RAM が必要です。
動作しているシステムで一部2880ピクセルを超えるデータを使用してしまっていたので、既存の画像ファイルから2880ピクセルを超えるファイルを探すために画像ファイルのピクセルサイズを取得するプログラムを作ってみました。
ファイル名の配列はlsとgrepで適当にコピペ。
$ ls | grep .gif >hairetsu.txt
モジュールImage::Sizeを使用しました。Cygwinでの実行です。
http://cpan.uwinnipeg.ca/htdocs/Image-Size/Image/Size.html
ファイルサイズの取得はimgsize($_)で。
#!/usr/bin/perl use strict; use warnings; use Image::Size; #ファイル名の配列 my @filename = qw/a.gif b.gif c.gif/; for(@filename){ #ファイルのピクセルサイズを取得 (my $x, my $y) = imgsize($_); #2880ピクセルを超えたらprintする if ($x > 2880 or $y > 2880){ print "$_\n"; } }