2

我正在尝试修改 python 3 中的现有元数据。更具体地说,我的元数据中有 GPS 坐标和高度,我需要修改它。

我正在使用 piexif mudule,我遇到了两个问题。首先,我设法改变了高度,使用 exif_dict['GPS'][piexif.GPSIFD.GPSAltitude] = (140, 1) 它并且它有效。

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

当我尝试使用修改后的元数据保存 tiff 文件时,会出现第二个问题。如果我将其保存为 TIFF file: img.save(fname_2, 'tiff', exif=exif_bytes),则会创建 fname_2 文件,但它的元数据不会更改。如果 Isave as 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
4

1 回答 1

0

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

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

53度数=北分( 291191/100000 29.1191== N;1 == S)

您可能还想检查这个答案,因为有一个更好的包来编辑照片元数据中的 GPS 坐标。

于 2019-07-30T13:23:46.840 回答