gpt4 book ai didi

python - 如何使用 PIL 维护图像调整大小的 exif 数据

转载 作者:太空狗 更新时间:2023-10-30 03:04:03 24 4
gpt4 key购买 nike

当我尝试使用 PIL 调整(缩略图)图像的大小时,它会破坏与图像关联的 exif 数据,我该如何保存它。

我调整图像大小并将其作为图像缓冲区上传到云端。

file_path = '...'
file_name = '...'
im = Image.open( file_path )
size =(512,521)
im.thumbnail( size, Image.ANTIALIAS)
thumbnail_buf_string = StringIO.StringIO()
file_save_extension = 'JPEG'
im.save(thumbnail_buf_string, format=file_save_extension)
upload_to_cloud('512_' + file_name , thumbnail_buf_string.getvalue())

调整后的图像没有 exif 数据。

最佳答案

注意:我自己还没有这样做过,但据我所知,PIL 只允许读取 exif 标签而不能写入它们。您可能需要 gexiv2 或 pyexiv2 才能将标签写入缩略图。

更新:我很好奇并自己尝试了 :D如果我没看错,您只想复制元数据而无需进一步修改。

这仍然很粗糙,但似乎有效:

import os
import Image
import pyexiv2

fp = '/home/klaus/workspace'
fn = 'img_2380.jpg'

full_path = os.path.join(fp, fn)
print full_path

im = Image.open(full_path)
size = 512, 512
im.thumbnail(size, Image.ANTIALIAS)
im.save('bla.jpg', 'JPEG')

oldmeta = pyexiv2.ImageMetadata(full_path)
oldmeta.read()
# read metadata of the original file

newmeta = pyexiv2.ImageMetadata('bla.jpg')
newmeta.read()
# read metadata of the new file
# yes, there aren't any, but this is crucial!
# you need this class as the target for copying!

oldmeta.copy(newmeta)

newmeta.write()
# don't forget to write the data to the new file

顺便说一句:感谢您提出有趣的问题!

关于python - 如何使用 PIL 维护图像调整大小的 exif 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17061222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com