Exif读取库

14 浏览
0 Comments

Exif读取库

有没有适用于Python 3.x的exif库?似乎我遇到的每个exif库都只适用于Python 2.x。我不需要太复杂的东西,只需要读取值就足够了。

0
0 Comments

Exif读取库问题的出现和解决方法

最近在使用Python 3.x时,遇到了一个问题,即如何在Python 3中读取EXIF标签。对此,我查看了pyexiv2的主页,并发现它已经被标记为弃用,并指向了Gexiv2这个库,它是一个基于GObject-introspection的libexiv2的封装,专门用于支持Python 3.x。

不幸的是,目前为止,安装Gexiv2仍然很麻烦,我尝试在Ubuntu Precise上安装它时遇到了问题(看起来库已经过时了,也许是我坚持使用LTS的结果...),所以PIL仍然是在Python 3中读取EXIF标签的最佳选择。

为了解决这个问题,我将继续使用PIL库。下面是一个示例代码,演示了如何使用PIL库读取图片的EXIF标签:

import PIL.ExifTags
from PIL import Image
def get_exif_data(image_path):
    image = Image.open(image_path)
    exif_data = image._getexif()
    if exif_data is not None:
        for tag, value in exif_data.items():
            tag_name = PIL.ExifTags.TAGS.get(tag, tag)
            print(f"{tag_name}: {value}")
    else:
        print("No EXIF data found.")
image_path = "example.jpg"
get_exif_data(image_path)

通过使用PIL库,我能够轻松地读取图片的EXIF标签,并在控制台上显示出来。尽管Gexiv2可能是一个更好的选择,但由于安装困难,我决定继续使用PIL库。

希望这个解决方案对那些在Python 3中遇到相同问题的人有所帮助。

0
0 Comments

在上述内容中,出现了一个关于Exif读取库的问题。根据给出的选项和代码,可以总结出以下原因和解决方法。

问题的原因是Python 3的支持。由于Python 3与之前的版本有一些不兼容的变化,一些现有的Exif读取库无法在Python 3上正常工作。

解决方法如下:

选项1:使用pyexiv2库。需要在Python 3上安装boost-python,并手动应用在上述bug末尾发布的补丁。在最新的Ubuntu系统上运行最简单。

选项2:使用PIL库的分支/fork。这个分支似乎没有进行活跃的开发。

代码示例:

from PIL import Image
from PIL.ExifTags import TAGS
image = Image.open("test.jpg")
exif = image._getexif()
# 使用TAGS解码exif

选项3:使用PythonMagick库。

代码示例:

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

另外,还可以参考stackoverflow上的一个相关问题,链接为https://stackoverflow.com/questions/765396。在这个问题中,可以下载图片并尝试获取ImageDescription。

请在此问题上进行测试,并尝试获取ImageDescription。具体链接为http://stackoverflow.com/questions/22173902。

0