3
此問題已被問起before,但它在幾年前被回答,答案是指一個斷開的鏈接,可能不再是最好的方法。如何在使用PIL調整圖像大小後恢復EXIF數據?
pyxiv2看起來好像會完成任務,但對於看起來很簡單的任務來說,它有很多依賴關係。
我也想知道什麼值將不再有效的大小的圖像。寬度和高度是顯而易見的。
此問題已被問起before,但它在幾年前被回答,答案是指一個斷開的鏈接,可能不再是最好的方法。如何在使用PIL調整圖像大小後恢復EXIF數據?
pyxiv2看起來好像會完成任務,但對於看起來很簡單的任務來說,它有很多依賴關係。
我也想知道什麼值將不再有效的大小的圖像。寬度和高度是顯而易見的。
爲防萬一有人想使用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))
經過在我的開發和web服務器系統上構建pyexiv2後,我決定自己動手做。我幾乎完成了一個腳本,它從一個文件中獲取EXIF塊並將其插入另一個文件中。在將其寫入目標文件之前,只需改變寬度,高度和方向。一旦完成,我可能會發佈一個鏈接。 – Jake 2010-11-08 22:03:02