Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使用Python 3+Pillow克隆图像以剥离隐藏的元数据_Python 3.x_Image Processing_Python Imaging Library_Metadata - Fatal编程技术网

Python 3.x 使用Python 3+Pillow克隆图像以剥离隐藏的元数据

Python 3.x 使用Python 3+Pillow克隆图像以剥离隐藏的元数据,python-3.x,image-processing,python-imaging-library,metadata,Python 3.x,Image Processing,Python Imaging Library,Metadata,我有一个客户端,它创建了几个大型PDF,每个PDF中包含数百个图像。这些图像是用一个程序创建的,该程序为每个文件添加唯一的信息;随机二进制数据放在一些文件头中,一些文件的数据伪装成图像伪影,每个图像中都有一般元数据。虽然我不熟悉这个程序,但我知道它是某种营销软件套件,所以我假设数据用于跟踪在线分销和分析 我有用于创建PDF的源文件,虽然我可以打开每个图像,克隆其可视数据,剥离元数据并重新压缩图像以删除标识数据,但我更愿意使用Pillow自动化该过程。问题是,我担心我会错过一些东西。客户希望从一个

我有一个客户端,它创建了几个大型PDF,每个PDF中包含数百个图像。这些图像是用一个程序创建的,该程序为每个文件添加唯一的信息;随机二进制数据放在一些文件头中,一些文件的数据伪装成图像伪影,每个图像中都有一般元数据。虽然我不熟悉这个程序,但我知道它是某种营销软件套件,所以我假设数据用于跟踪在线分销和分析

我有用于创建PDF的源文件,虽然我可以打开每个图像,克隆其可视数据,剥离元数据并重新压缩图像以删除标识数据,但我更愿意使用Pillow自动化该过程。问题是,我担心我会错过一些东西。客户希望从一个在线用户名后面释放文件,他不希望用户名与这个程序或其分析跟踪机制绑定


所以我的问题是:我如何克隆一个带有枕头的图像,以剥离所有标识元数据?图像文件非常庞大,从128MB到2GB不等。所有图像都是PNG未压缩或JPEG文件,压缩程度很低。我没有嫁给Pillow,所以如果有更好的软件库或独立软件更适合这一点,我将使用它。

将像素数据复制到新图像应删除所有元数据,并稍微压缩图像,就像jpeg应删除跟踪数据一样

您可能需要修改加载/复制/保存方法来处理大型文件。还要注意PIL文件的大小。这里不处理png文件中的不透明度

import os
from PIL import Image

picture_dir = ''

for subdir, dirs, files in os.walk(picture_dir):
    for f in files:
        ext = os.path.splitext(f)[1]
        if( ext in ['.jpg','.jpeg','.png'] ):
            full_path = os.path.join(subdir, f)
            im = Image.open(full_path)

            data = list(im.getdata())
            no_exif = Image.new('RGB', im.size) # not handling opacity
            no_exif.putdata(data) # should strip exif

            out_path = full_path.split(ext)[0] + 'clean.jpg'
            no_exif.save(out_path, 'JPEG', quality=95) # compressing should remove steganography
只需使用安装在大多数Linux发行版上并可用于macOS和Windows的ImageMagick即可。因此,在终端中,从输入文件中剥离元数据并重新保存:

magick input.jpg -strip result.jpg
如果要在当前目录中执行所有JPEG:

magick mogrify -strip *.jpg
或者你也可能想改变一下质量:

magick mogrify -quality 82 -strip *.jpg

听起来好像有人没有向一个营销软件支付费用……听起来有点可疑。请注意,跟踪信息可能不仅存在于嵌入的图像中,还可能对单词间距/拼写或标点符号进行微小更改,从而使文档具有可跟踪性。所有已发布的信息都是程序说明。但是,我们需要您根据页面提出一个问题。我们不能确定你想从我们这里得到什么。请在您的帖子中加入我们可以回答的有效问题。提醒:通过访问网站,确保您知道这里的主题;要求我们为您编写程序、建议和外部链接都是离题的。只需在枕头中开始编码一个图像再压缩程序和metatag剥离器——如果您有问题,请返回一个特定的。