Zazelです。
(2014/05/03 18:48), davi wrote:
> ある程度、仕様書が公開されているJPEG画像ですら、バイナリを
> なめてEXIF情報部分だけを復元するのはきっと大変ですよね?
http://www.jeita.or.jp/cgi-bin/standard/list.cgi?cateid=1&subcateid=4
にあるExifフォーマット規格を読む限り、サムネイルを含む画像データ以外は
圧縮されてないみたいなので、単なる生データの表示ならばそれほど難しく
ないです。以下は殴り書き。
-----^
readexif.pl ( date:14-05-04 time:07:59:20 ) --< cut here
#!/usr/local/bin/perl
use strict;
use warnings;
my $fh;
open($fh, '<:raw', shift @ARGV) || die;
my $buff;
read($fh, $buff, 2) == 2 || die;
if (unpack('n', $buff) != 0xffd8) {
print "not JPEG file\n";
exit(0);
}
while (1) {
read($fh, $buff, 4) == 4 || die;
my ($marker, $length) = unpack('nn', $buff);
$length -= 2;
if ($marker == 0xffda) {
print "no EXIF\n";
last;
}
elsif ($marker != 0xffe1) {
seek $fh, $length, 1;
next;
}
read($fh, $buff, 6) == 6 || die;
$length -= 6;
if ($buff ne "Exif\0\0") {
seek $fh, $length, 1;
next;
}
print "exist EXIF\n";
read($fh, $buff, $length) == $length || die;
my $count = 0;
foreach my $byte (unpack 'C*', $buff) {
print "\n" if $count != 0 && $count % 16 == 0;
printf "%02X ", $byte;
$count++;
}
print "\n";
last;
}
close $fh;
-----$
readexif.pl ( lines:47 words:140 size:906 ) --< cut here