Exif读取库

7

是否有适用于Python 3.x的exif库?似乎我遇到的每个exif库都只适用于Python 2.x。我不需要太复杂的东西,只需读取数值即可。


1
这有点作弊,但我们使用Python中的子进程调用Phil Harvey的exiftool,并使用-json -fast -@ argfile选项。它简单而完整,并且当您需要批处理处理数千个图像时速度很快(我们就是这样做的)。 - Ben Hoyt
2个回答

14

选项1:使用pyexiv2。 请参考:pyexiv2 Bug#824440:Python 3支持。 您需要为py3k安装boost-python并手动应用上述错误末尾发布的补丁,但除此之外它可以工作。 可能在最新的Ubuntu下最容易启动和运行。

选项2:使用PIL。 缺点:这个分支/派生似乎没有被积极开发。

from PIL import Image
from PIL.ExifTags import TAGS

image = Image.open("test.jpg")
exif = image._getexif()
# decode exif using TAGS

选项3. 使用PythonMagick

from PythonMagick import Image

img = Image("image.jpg")
print img.attribute("EXIF:Orientation")

另请参阅:Python的Exif操作库


啊,没想到PIL有Python3的分支。我会试一试并回复你。 - System Down
你能否在这个问题上进行测试,下载图片,并尝试获取ImageDescription?https://dev59.com/Bn3aa4cB1Zd3GeqPZzS- - A.J.

5
作为参考,pyexiv2首页现在已经有了一个弃用警告,指向Gexiv2,这是一个基于GObject-introspection的包装器,围绕libexiv2(与pyexiv2包装相同的库)专门支持Python 3.x。

不幸的是,在撰写本文时,安装Gexiv2仍然很痛苦,到目前为止我还无法在Ubuntu Precise上使其正常工作(看起来libs已过时-可能是因为我坚持使用LTS...),因此PIL仍然是Python 3中读取EXIF标签的最佳选择。


您的gexiv2链接似乎已经失效。 - Antony Hatchkins
谢谢 - 现在应该已经修复了。 - Dave Jones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接