Как прочитать изображение в виде байтового массива с помощью Perl? - PullRequest
3 голосов
/ 25 июля 2011

У меня очень мало опыта в Perl.

Мне нужно прочитать двоичное изображение и передать его в модуль Image::ExifTool.

Вот мой код:

use Image::ExifTool;

my $exifTool = new Image::ExifTool; 

open(IMAGE, $file) || die "Can't Open $file\n";
binmode(IMAGE);

my ($buf, $data, $n);
while (($n = read FILE, $data, 4) != 0) {
  $buf .= $data;
}

#'.=' is concat
print $file .= " test";

$infob = $exifTool->ImageInfo(\$buf);

foreach ( keys %$infob ) {
    print "$_ => $$infob{$_}\n";
}

close(IMAGE);

Насколько я могу судитьМой код выше читает в справочном файле и добавляет на уровне байтов двоичные данные к $buf.

Согласно документации ExifTool, вы можете передать ссылку в файле на файл в виде скалярной переменнойметод ImageInfo - это сделано выше.

При выполнении модуль Image :: ExifTool выдает следующее:

Error => Unknown file type

1 Ответ

5 голосов
/ 25 июля 2011
use Image::ExifTool;

my $exifTool = new Image::ExifTool; 

open( my $IMAGE, $filename ) || die "Can't Open $filename\n";
binmode($IMAGE);

$infob = $exifTool->ImageInfo($IMAGE);

foreach ( keys %$infob ) {
    print "$_ => $$infob{$_}\n";
}

close($IMAGE);
...