2010-10-27 95 views
3

此問題已被問起before,但它在幾年前被回答,答案是指一個斷開的鏈接,可能不再是最好的方法。如何在使用PIL調整圖像大小後恢復EXIF數據?

pyxiv2看起來好像會完成任務,但對於看起來很簡單的任務來說,它有很多依賴關係。

我也想知道什麼值將不再有效的大小的圖像。寬度和高度是顯而易見的。

+0

經過在我的開發和web服務器系統上構建pyexiv2後,我決定自己動手做。我幾乎完成了一個腳本,它從一個文件中獲取EXIF塊並將其插入另一個文件中。在將其寫入目標文件之前,只需改變寬度,高度和方向。一旦完成,我可能會發佈一個鏈接。 – Jake 2010-11-08 22:03:02

回答

3

爲防萬一有人想使用piexiv2,下面是一個解決方案:使用PIL庫調整圖像的大小,使用pyexiv2複製EXIF數據和使用新大小設置圖像大小EXIF字段。

import pyexiv2 
import tempfile 
from PIL import Image 


def resize_image(source_path, dest_path, size): 
    # resize image 
    image = Image.open(source_path) 
    image.thumbnail(size, Image.ANTIALIAS) 
    image.save(dest_path, "JPEG") 

    # copy EXIF data 
    source_image = pyexiv2.Image(source_path) 
    source_image.readMetadata() 
    dest_image = pyexiv2.Image(dest_path) 
    dest_image.readMetadata() 
    source_image.copyMetadataTo(dest_image) 

    # set EXIF image size info to resized size 
    dest_image["Exif.Photo.PixelXDimension"] = image.size[0] 
    dest_image["Exif.Photo.PixelYDimension"] = image.size[1] 
    dest_image.writeMetadata() 

# resizing local file 
resize_image("41965749.jpg", "resized.jpg", (600,400)) 
相關問題