我正在使用Image :: ExifTool来满足我的需求。
但是现在,只需要检测图像是否有EXIF数据,Image :: ExifTool一直返回一些数据(例如,从文件stat返回元数据,以及内部图像检测)。所以,
#!/usr/bin/perl
use 5.014;
use warnings;
use open qw(:std :utf8);
use Image::ExifTool qw(:Public);
use Data::Dumper;
my $ext = new Image::ExifTool;
while(<>) {
chomp;
next unless(-f $path);
if( $ext->ExtractInfo($path) ) {
say "$_" for (sort $ext->GetFoundTags());
}
else {
say "NO\t$path";
}
}
打印许多“Found”标签,但该文件不包含任何exif信息。
这里有一些简单的方法来检测图像是否真的有或没有使用Image :: ExifTool的EMBEDEDD exif数据?
如果有人需要其他信息:拥有exif数据并使用exif数据img.jpg
,那么:
$ exif --list-tags --no-fixup img.jpg
#or
$ identify -format '%[exif:*]' img.jpg
打印许多标签。现在
$ cp img.jpg img2.jpg
$ mogrify -strip img2.jpg #removing all exif data, so
$ exif --list-tags --no-fixup img2.jpg
打印
Corrupt data
The data provided does not follow the specification.
ExifLoader: The data supplied does not seem to contain EXIF data.
和
$ identify -format '%[exif:*]' img2.jpg
什么都不打印。所以img2.jpg
没有exif数据。但是上面的perl脚本仍会打印许多“Found”标签。
答案 0 :(得分:2)
尝试调用$ ext-&gt; GetInfo('EXIF:*')以仅获取EXIF信息。