簡體   English   中英

如何使用PIL維護圖像的exif數據

[英]how maintain exif data of images resizes using PIL

當我嘗試使用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

順便說一句:感謝有趣的問題!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM