我想使用PIL或piexif更改图像中的exif数据。
如果我用piexif提取数据,则会得到字典,这很难理解它是如何工作的以及哪个键对应哪个值:
{'0th': {256: 2976, 257: 3968, 258: (8, 8, 8), 271: b'HUAWEI', 272: b'MHA-L09', 274: 0, 282: (72, 1), 283: (72, 1), 296: 2, 305: b'MHA-L09 9.0.1.158(ASDLALDS)', 306: b'2019:05:07 21:49:12', 531: 1, 34665: 270},
如果我用PIL提取数据,我会得到一个漂亮的字典:
{'ImageWidth': 2976, 'ImageLength': 3968, 'BitsPerSample': (8, 8, 8), 'ExifVersion': b'0210', 'ComponentsConfiguration': b'\x01\x02\x03\x00', 'CompressedBitsPerPixel': (95, 100), 'DateTimeOriginal': '2019:05:07 21:49:12', 'DateTimeDigitized': '2019:05:07 21:49:12', 'ShutterSpeedValue': (298973, 10000)
PIL代码:
from PIL import Image
from PIL.ExifTags import TAGS
import piexif
def get_exif(fn):
ret = {}
i = Image.open(fn)
info = i._getexif()
for tag, value in info.items():
decoded = TAGS.get(tag, tag)
ret[decoded] = value
exif_bytes = piexif.dump(ret)
i.save('%s' % 'bild.jpg', "jpeg", exif=exif_bytes)
return ret
Piexif代码:
import piexif
from PIL import Image
from collections import defaultdict
img = Image.open('bild2.jpg')
try:
exif_dict = piexif.load(img.info["exif"])
except KeyError:
exif_dict = defaultdict(dict)
exif_img = defaultdict(dict)
exif_dict['Exif'][piexif.ExifIFD.DateTimeDigitized] = '2022:05:07 21:49:12'
exif_bytes = piexif.dump(exif_dict)
img.save('%s' % 'bild.jpg', "jpeg", exif=exif_bytes)
如果我更改从PIL获得的exif词典并使用piexif对其进行安全保护,那么我的新映像将不再具有exif数据。有人知道如何使用PIL编辑和安全exif吗?或如何理解我从piexif获得的字典。