Python:从图像中删除 Exif 信息

新手上路,请多包涵

为了减小网站中使用的图像的大小,我将质量降低到 80-85%。这在一定程度上减小了图像尺寸。

为了在不影响质量的情况下进一步减小尺寸,我的朋友指出来自相机的原始图像有很多称为 Exif 信息的元数据。由于不需要为网站中的图像保留此 Exif 信息,因此我们可以将其删除。这将进一步减少 3-10 kB 的大小。

但是我无法在我的 Python 代码中找到合适的库来执行此操作。我浏览了相关问题并尝试了一些方法:

原图:http: //mdb.ibcdn.com/8snmhp4sjd75vdr27gbadolc003i.jpg

  1. 移动
   /usr/local/bin/mogrify -strip filename

结果: http ://s23.postimg.org/aeaw5x7ez/8snmhp4sjd75vdr27gbadolc003i_mogrify.jpg 这种方法将大小从 105 kB 减少到 99.6 kB,但也改变了颜色质量。

  1. Exif工具
   exiftool -all= filename

结果: http ://s22.postimg.org/aiq99o775/8snmhp4sjd75vdr27gbadolc003i_exiftool.jpg 这种方法将大小从 105 kB 减少到 72.7 kB,但也改变了颜色质量。

  1. This answer 详细解释了如何操作 Exif 信息,但我如何使用它来删除信息?

谁能帮我删除所有额外的元数据而不改变图像的颜色、尺寸和其他属性?

原文由 Sudipta 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 917
2 个回答

您可以尝试使用 Python Image Lirbary (PIL) 加载图像,然后再次将其保存到不同的文件中。那应该删除元数据。

原文由 Ber 发布,翻译遵循 CC BY-SA 3.0 许可协议

from PIL import Image

image = Image.open('image_file.jpeg')

# next 3 lines strip exif
data = list(image.getdata())
image_without_exif = Image.new(image.mode, image.size)
image_without_exif.putdata(data)

image_without_exif.save('image_file_without_exif.jpeg')

原文由 user2141737 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题