使用PIL piexif更改Exif元数据

时间:2019-05-22 19:57:37

标签: python exif

我想使用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获得的字典。

0 个答案:

没有答案