我想使用 exiftool 更新照片元数据的数据,例如温度传感器、高度传感器和 GPS 经度高度的数据。首先,我尝试在 exiftool 配置文件中使用命令行添加这些数据的新标签,并且它可以工作。现在,我想使用 python 脚本更新数据,然后有人告诉我可以使用execute() 方法,但我很困惑,仍然不知道如何使用这些方法。
任何人都可以帮助并给我exiftool中的python脚本示例来编辑元数据吗?
我想使用 exiftool 更新照片元数据的数据,例如温度传感器、高度传感器和 GPS 经度高度的数据。首先,我尝试在 exiftool 配置文件中使用命令行添加这些数据的新标签,并且它可以工作。现在,我想使用 python 脚本更新数据,然后有人告诉我可以使用execute() 方法,但我很困惑,仍然不知道如何使用这些方法。
任何人都可以帮助并给我exiftool中的python脚本示例来编辑元数据吗?
您的特定问题的代码是:
import exiftool
et = exiftool.ExifTool("C:\Users\...\exiftool.exe")
et.execute("-GPSLongitude=10.0", "picture.jpg")
et.execute("-GPSLatitude=5.78", "picture.jpg")
et.execute("-GPSAltitude=100", "picture.jpg")
et.terminate()
terminate
或者,您可以在使用with
语句时省略调用:
with exiftool.ExifTool("C:\Users\...\exiftool.exe") as et:
et.execute("-GPSLongitude=10.0", "picture.jpg")
et.execute("-GPSLatitude=5.78", "picture.jpg")
et.execute("-GPSAltitude=100", "picture.jpg")
使用该with
语句确保子进程被杀死,请参阅PyExifTool 文档
如果您想更改日期(创建、修改等),请确保省略日期本身周围的引号。这是我花了一段时间才弄清楚的原因,因为没有发生错误处理:
命令行:
exiftool -FileModifyDate="2015:10:01 10:00:00" picture.jpg
Python:
et.execute("-FileModifyDate=2015:10:01 10:00:00", "picture.jpg")
尝试这样做:
from your_class import ExifTool, fsencode
with ExifTool(source) as et:
params = map(fsencode, ['-Title="%s"' % title, '%s' % source_file])
et.execute(*params)
我为此挣扎了一会儿,直到我最终发现我必须以这种方式传递参数。如果您查看该execute_json
方法,这就是我得到这个想法的地方。
可能有一个更优雅的解决方案,但这对我有用。另外,我正在使用 Python 3。