为了减少网站中使用的图像尺寸,我将质量降低到80-85%。这样可以在很大程度上减小图像尺寸。
为了在不影响质量的情况下进一步缩小尺寸,我的朋友指出,来自相机的原始图像有很多称为Exif信息的元数据。由于无需为网站中的图像保留此Exif信息,我们可以将其删除。这将进一步缩小3-10 kB。
但是我无法在Python代码中找到合适的库来执行此操作。我浏览了相关问题并尝试了一些方法:
原始图片:http://mdb.ibcdn.com/8snmhp4sjd75vdr27gbadolc003i.jpg
/usr/local/bin/mogrify -strip filename
结果:http://s23.postimg.org/aeaw5x7ez/8snmhp4sjd75vdr27gbadolc003i_mogrify.jpg 这种方法将尺寸从105 kB减小到99.6 kB,但也改变了颜色质量。
exiftool -all= filename
结果:http://s22.postimg.org/aiq99o775/8snmhp4sjd75vdr27gbadolc003i_exiftool.jpg 这种方法将尺寸从105 kB减小到72.7 kB,但也改变了颜色质量。
有人可以帮我删除所有额外的元数据而不更改图像的颜色,尺寸和其他属性吗?
答案 0 :(得分:23)
from PIL import Image
image_file = open('image_file.jpeg')
image = Image.open(image_file)
# 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')
答案 1 :(得分:6)
对我来说,gexiv2
效果很好:
#!/usr/bin/python3
from gi.repository import GExiv2
exif = GExiv2.Metadata('8snmhp4sjd75vdr27gbadolc003i.jpg')
exif.clear_exif()
exif.clear_xmp()
exif.save_file()
另请参阅您链接的Exif manipulation library for python,但未阅读所有答案;)
答案 2 :(得分:5)
您可以尝试使用Python Image Lirbary (PIL)加载图像,然后将其再次保存到其他文件中。这应该删除元数据。
答案 3 :(得分:0)
您甚至不需要执行建议的额外步骤@ user2141737。只需使用PIL将其打开并再次保存,就可以解决问题:
from PIL import Image
image = Image.open('path/to/image')
image.save('new/path/' + file_name)