【问题标题】:Python: Strip EXIF from image using a streamPython:使用流从图像中剥离 EXIF
【发布时间】:2016-01-17 06:20:43
【问题描述】:

基于here 的解决方案之一,我使用以下代码从图像中去除 EXIF 数据:

def remove_exif_from_image(image_path):
    img = Image.open(image_path)
    data = list(img.getdata())
    clean_img = Image.new(img.mode, img.size)
    clean_img.putdata(data)
    clean_img.save(image_path)

我发现这个功能在我的本地机器上运行得很好,但是,当我尝试在我的微型 DigitalOcean VPS it causes my gunicorn process to crash 上运行它时。

我猜这是因为 img.getdata() 返回了一些巨大的东西。

我如何通过分块读/写而不是将整个图像读入内存来去除 EXIF?

【问题讨论】:

  • 您是否尝试过第三个答案中建议的gexiv2 解决方案?
  • 我确实尝试过,但我遇到了从源代码构建的问题,所以我放弃了。

标签: python-2.7 python-imaging-library


【解决方案1】:

由于主要约束似乎是“在我的微型 VPS 上运行的东西”,请考虑为此任务安装和使用 exiftool,并对它进行系统调用:

exiftool -all= -overwrite_original tmp.jpg

这并不能完全回答您关于使用 python 流的问题,但可能会解决您的问题。

【讨论】:

  • 谢谢马克。那工作得很好。内存使用量没有跳跃,exif 被剥离。我仍然想知道是否可以将 PIL 与分块一起使用,所以我将保持问题的开放性。
猜你喜欢
  • 2016-07-02
  • 2015-07-24
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-22
  • 2013-11-16
  • 1970-01-01
相关资源
最近更新 更多