昨晚睡觉前,我再次浏览了Learning Perl的Scalar Data部分,发现了以下句子:
字符串中包含任何字符的能力意味着您可以将原始二进制数据作为字符串创建、扫描和操作。
我立刻想到我可以让 Perl 扫描我存储在硬盘上的图片以检查它们是否包含字符串 Adobe。似乎通过这样做,我可以分辨出其中哪些已被photoshop过。所以我尝试实现这个想法并想出了以下代码:
#!perl
use autodie;
use strict;
use warnings;
{
local $/="\n\n";
my $dir = 'f:/TestPix/';
my @pix = glob "$dir/*";
foreach my $file (@pix) {
open my $pic,'<', "$file";
while(<$pic>) {
if (/Adobe/) {
print "$file\n";
}
}
}
}
令人兴奋的是,代码似乎真的很有效,它可以过滤掉经过 photoshop 处理的图片。但问题是许多图片是由其他实用程序编辑的。我想我有点卡在那里。我们是否有一些简单但通用的方法来判断数码图片是否经过编辑,例如
if (!= /the origianl format/) {...}
还是我们只需要添加更多条件?像
if (/Adobe/|/ACDSee/|/some other picture editors/)
对此有什么想法吗?还是因为我的编程知识非常有限而过于简单化了?
一如既往地感谢您的任何指导。