如何修改TIF文件的EXIF数据

时间:2019-07-30 13:04:07

标签: python-3.x python-imaging-library tiff exif piexif

我正在尝试修改python 3中的现有元数据。更具体地说,我的元数据中有GPS坐标和海拔高度,因此需要对其进行修改。

我正在使用piexif模头,遇到了两个问题。 首先,我设法使用 exif_dict['GPS'][piexif.GPSIFD.GPSAltitude] = (140, 1) 而且有效。

但是我不知道如何更改纬度和经度?因为它们由三个字段组成,例如((53,1),(291191,10000),(0,1))。

当我尝试使用修改后的元数据保存tiff文件时,出现第二个问题。如果我将其另存为TIFF文件: img.save(fname_2, 'tiff', exif=exif_bytes), fname_2文件已创建,但其元数据未更改。如果Isave为JPEG- img.save(fname_2, 'jpeg', exif=exif_bytes) -元数据已更改,但是文件从289 MB压缩到15 MB,因此无法将其用于我的目的。

有人设法做到这一点吗?听起来很简单,但我似乎无法解决。

import piexif
from PIL import Image
Image.MAX_IMAGE_PIXELS = 1000000000

fname_1='D:\EZG\Codding\photo\iiq/eee.tif'
fname_2='D:\EZG\Codding\photo\iiq/eee_change.tif'
img = Image.open(fname_1)
exif_dict = piexif.load(fname_1)

latitide = exif_dict['GPS'][piexif.GPSIFD.GPSLatitude]
longtitude = exif_dict['GPS'][piexif.GPSIFD.GPSLongitude]
altitude = exif_dict['GPS'][piexif.GPSIFD.GPSAltitude]

print(latitide)
print(longtitude)
print(altitude)

exif_dict['GPS'][piexif.GPSIFD.GPSAltitude] = (140, 1)

exif_bytes = piexif.dump(exif_dict)
img.save(fname_2, 'tiff', exif=exif_bytes)

the fname_2 file is created, but it's metadata isn't changed

1 个答案:

答案 0 :(得分:0)

基于SO上的其他问题和答案,似乎这些值被编码为分数:

((53, 1), (291191, 10000), (0, 1)) 

53291191/10000 = 29.1191分钟北(0 == N; 1 == S)

您可能还需要检查this answer,因为有一个更好的程序包可以编辑照片元数据中的GPS坐标。