如何使用Perl以字节数组的形式读取图像?

wul*_*pro 3 perl byte image file

我的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);
Run Code Online (Sandbox Code Playgroud)

据我所知,上面的代码读入了参考文件,并在二进制数据的字节级别附加$buf.

根据ExifTool文档,您可以将内存引用作为标量var传递给ImageInfo方法 - 这在上面完成.

执行时,Image :: ExifTool模块会吐出以下内容:

Error => Unknown file type
Run Code Online (Sandbox Code Playgroud)

Pra*_*eep 5

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);
Run Code Online (Sandbox Code Playgroud)