$ file sample.jpg
sample.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), density 123x123, segment length 16, progressive, precision 8, 1024x1448, frames 3
$ perl -v
This is perl 5, version 22, subversion 1 (v5.22.1) built for darwin-thread-multi-2level
$ hexdump -C sample.jpg | head -30
00000000 ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 7b |......JFIF.....{|
00000010 00 7b 00 00 ff db 00 43 00 01 01 01 01 01 01 01 |.{.....C........|
00000020 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................|*
00000090 01 01 01 01 01 01 01 01 01 01 01 01 01 01 >>>> ff c2 <<<< |................|
000000a0 00 11 08 >>> 05 a8 04 00 <<<< 03 01 22 00 02 11 01 03 11 |........."......|
000000b0 01 ff c4 00 1e 00 01 00 01 04 03 01 01 00 00 00 |................|
000000c0 00 00 00 00 00 00 00 06 05 07 08 09 03 04 0a 02 |................|
####
elsif ( $_[0] =~ m/^^\xFF\xD8.{4}JFIF/s ) {
$sig = 'JPEG'; # found JPG signature
($height,$width) = unpack( "nn", $1 )
if $_[0] =~ /\xFF\xC0...(....)/s;
to
elsif ( $_[0] =~ m/^^\xFF\xD8.{4}JFIF/s ) {
$sig = 'JPEG';
($height,$width) = unpack( "nn", $1 )
if $_[0] =~ /\xFF\xC2...(....)/s;
along with the driver
for my $img ( qw( ./sample.jpg ./sampleC.jpg ) ) {
my $data = get_file($img);
my @res = image_size($data);
print "\nNative $img $res[2] width $res[0] height $res[1]\n";
($x, $y) = imgsize($img);
print "Image::Size ($x, $y)\n"
####
Native ./sample.jpg JPEG width 1024 height 1448
Image::Size (1024, 1448)
Native ./sampleC.jpg JPEG width 617 height 1220
Image::Size (617, 1220)