如何修改 TIFF 文件的 EXIF 数据
How to modify TIF file's EXIF data
我正在尝试修改 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 文件已创建,但其元数据未更改。如果我另存为 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
根据 SO 上的其他问题和答案,这些值似乎被编码为分数:
((53, 1), (291191, 10000), (0, 1))
北 53
度 291191/10000
= 29.1191
分(0 == N;1 == S)
您可能还想查看 ,因为有一个更好的软件包可以编辑照片元数据中的 GPS 坐标。
我正在尝试修改 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 文件已创建,但其元数据未更改。如果我另存为 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
根据 SO 上的其他问题和答案,这些值似乎被编码为分数:
((53, 1), (291191, 10000), (0, 1))
北 53
度 291191/10000
= 29.1191
分(0 == N;1 == S)
您可能还想查看