读取和修改数字图像的元数据,包括exif、iptc、xmp。
pyexiv2的Python项目详细描述
< H1> PyxIV2
读取和修改数字图像的元数据,包括exif、iptc、xmp。
- 安装:
pip install pyexiv2
- source code on github
功能
- 支持在Linux 64位上运行。
- 支持在64位Windows上运行,使用Python3(64位)。
- Supports various metadata
- Supports various image formats
- 支持包含在图像路径和数据中的Unicode字符。
- 不是线程安全的,因为使用了一些全局变量。
用法
读取元数据:
>>>frompyexiv2importImage>>>i=Image("tests/1.jpg")>>>i.read_exif(){'Exif.Image.DateTime':'2019:06:23 19:45:17','Exif.Image.Artist':'TEST','Exif.Image.Rating':'4',...}>>>i.read_iptc(){'Iptc.Envelope.CharacterSet':'\x1b%G','Iptc.Application2.ObjectName':'TEST','Iptc.Application2.Keywords':'TEST',...}>>>i.read_xmp(){'Xmp.dc.format':'image/jpeg','Xmp.dc.rights':'lang="x-default" TEST','Xmp.dc.subject':'TEST',...}
修改元数据:
>>># prepare the XMP data you want to modify>>>_dict={"Xmp.xmp.CreateDate":"2019-06-23T19:45:17.834",# this will overwrite its original value, or add it if it doesn't exist..."Xmp.xmp.Rating":""}# set an empty str explicitly to delete the datum}>>>i.modify_xmp(_dict)>>>xmp_dict=i.read_xmp()# read it again>>>xmp_dict["Xmp.xmp.CreateDate"]'2019-06-23T19:45:17.834'# it has been set>>>xmp_dict["Xmp.xmp.Rating"]KeyError:'Xmp.xmp.Rating'# it has been deleted# use i.modify_exif() and i.modify_iptc() in the same way
简而言之,请调用类
的公共方法pyexiv2.Image
:i=Image("tests/1.jpg")i.read_exif()i.read_iptc()i.read_xmp()i.read_all()i.modify_exif({"Exif.Image.ImageDescription":"test",...})i.modify_iptc({"Iptc.Application2.ObjectName":"test",...})i.modify_xmp({"Xmp.xmp.CreateDate":"2019-06-23T19:45:17.834",...})i.modify_all({"EXIF":{...},"IPTC":{...},"XMP":{...}})i.clear_exif()i.clear_iptc()i.clear_xmp()i.clear_all()
测试
文件夹中有一些测试用例“PyExvI2/测试”。通过pytest运行它们:
pip install pytest psutil pytest -v