使用Image :: ExifTool检测exif

时间:2013-06-24 19:02:49

标签: perl exiftool

我正在使用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”标签。

1 个答案:

答案 0 :(得分:2)

尝试调用$ ext-&gt; GetInfo('EXIF:*')以仅获取EXIF信息。

  • 菲尔