2011年4月21日木曜日

PNG画像のサイズをperlで取得する

動機:
perlでモジュール(Image::Size)を使わずに画像サイズを取得したい.


やってみた:
以前あれこれやっていたときにファイル自身に情報があることを知っていたのでそれを読み込んで出力する(だけ).

#! /usr/bin/env perl
open(IN, "A.png");
binmode(IN);
read(IN, $buff, 24);
close(IN);
($dummy, $w, $h)= unpack("a16NN", $buff);
print "$w $h\n";

おいらの環境(MBP)ではNと指定する必要があった.
24= 8(PNG識別部)+4(チャンクデータ長)+4(チャンク名称:IHDR)+4(画像幅)+4(画像高さ)


参考:
感謝.
PNGについて
Perlのpackとunpack

0 件のコメント: