加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 如何编写Perl脚本来过滤掉已经过修改的数字图片?

发布时间:2020-12-14 06:06:58 所属栏目:百科 来源:网络整理
导读:昨天晚上睡觉之前,我再次浏览了Learning Perl的 Scalar Data部分并看到了以下句子: the ability to have any character in a string means you can create,scan,and manipulate raw binary data as strings. 一个想法立即打击我,我实际上可以让Perl扫描我存
昨天晚上睡觉之前,我再次浏览了Learning Perl的 Scalar Data部分并看到了以下句子:

the ability to have any character in a string means you can create,scan,and manipulate raw binary data as strings.

一个想法立即打击我,我实际上可以让Perl扫描我存储在硬盘上的图片,以检查它们是否包含Adobe字符串.通过这样做,我可以分辨出哪些已被拍照.所以我尝试实现这个想法并提出以下代码:

#!perl
use autodie;
use strict;
use warnings;

{
    local $/="nn";
    my $dir = 'f:/TestPix/';
    my @pix = glob "$dir/*";

    foreach my $file (@pix) {
        open  my $pic,'<',"$file";

        while(<$pic>) {
            if (/Adobe/) {
                print "$filen";
            }
        }
    }
}

令人兴奋的是,代码似乎真的很有效,它可以过滤出已经过photoshopped的图片.但问题是许多图片是由其他公用事业编辑的.我想我有点卡在那里.我们是否有一些简单但通用的方法来判断数字图片是否已被编辑,例如

if (!= /the origianl format/) {...}

或者我们只需添加更多条件?喜欢

if (/Adobe/|/ACDSee/|/some other picture editors/)

有什么想法吗?或者由于我的编程知识极其有限,我还是过于简单化了?

一如既往地感谢任何指导.

解决方法

您在Perl中的最佳选择可能是 ExifTool.这使您可以访问嵌入到图像中的任何非图像信息.然而,正如其他人所说,当然可以删除这些信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读