【问题标题】:Writing exif data to the exif header using PyExifTool使用 PyExifTool 将 exif 数据写入 exif 标头
【发布时间】:2022-01-15 04:48:31
【问题描述】:

查看 2015 年 link 关于如何使用 PyExifTool 写入 Exif 标头的帖子。我试了一下:

import exiftool
fileno=r'DSC00001.JPG
with exiftool.ExifTool() as et:
    et.execute("EXIF:GPSLongitude=100",fileno)
    et.execute("EXIF:GPSLatitude=100",fileno)

作为回应,我收到以下错误:

TypeError: sequence item 0: expected a bytes-like object, str found

然后按照documentation中的说明,execute需要字节命令,所以我咬了,所以我也尝试了:

with exiftool.ExifTool() as et:
   et.execute(bytes("EXIF:GPSLongitude=100", 'utf-8'),fileno)
   et.execute(bytes("EXIF:GPSLatitude=50",'utf-8'),fileno)

但还是出现同样的错误:

TypeError: sequence item 1: expected a bytes-like object, str found

我不确定我做错了什么,以及 Exiftool 是否可以写入文件。

【问题讨论】:

    标签: python-3.x exif exiftool


    【解决方案1】:

    问题在于execute 方法是低级的,需要字节作为您传递的参数文件名的输入。试试这个:

    import exiftool
    pic = b"DSC00001.JPG"
    with exiftool.ExifTool() as et:
        et.execute(b"-GPSLatitude=11.1", pic)
        tag = et.get_tag("EXIF:GPSLatitude", pic)
        print(tag)
    

    【讨论】:

    • 我认为你的建议是正确的。问题是在某些情况下不会引发错误,我认为这就是其中之一。当我根据您的建议运行代码时,print(tag) 返回 NONE。即使您尝试 et.get_metadata(pic),也没有 GPS 信息。
    • 检查我的最新编辑。要实际编写标签,您需要使用以下形式:“-TAG=VALUE”而不是“EXIF:TAG”格式。如果您以当前形式使用上面的代码,它应该可以工作,并且“print(tag)”现在应该返回一个值。
    【解决方案2】:
    #Gracias!
    
        exif = r'...\exiftool.exe'
        file=br"...\FRM_20220111_134802.JPG"
        
        with exiftool.ExifTool(exif) as et:
            et.execute(b"-DateTimeOriginal=2022:10:10 10:10:10", file)
            tag = et.get_tag("EXIF:DateTimeOriginal", file)
            ...
    
    #RCM_Chile
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多