Python 的 Exif 操作库[关闭]

2025-03-11 08:53:00
admin
原创
34
摘要:问题描述:我正在寻找适用于 Python 的优秀 exif(可交换图像文件格式)操作库。我更喜欢灵活性(例如,检索提供商专有标签的能力),而不是处理速度。您有什么建议?解决方案 1:你可能想看看exif-py:Python 库用于从 tiff 和 jpeg 文件中提取 EXIF 数据。非常容易使用 - $ ....

问题描述:

我正在寻找适用于 Python 的优秀 exif(可交换图像文件格式)操作库。我更喜欢灵活性(例如,检索提供商专有标签的能力),而不是处理速度。您有什么建议?


解决方案 1:

你可能想看看exif-py:

Python 库用于从 tiff 和 jpeg 文件中提取 EXIF 数据。非常容易使用 - $ ./EXIF.py image.jpg

或Python 图像库 (PIL):

Python 图像库 (PIL) 为您的 Python 解释器添加了图像处理功能。该库支持多种文件格式,并提供强大的图像处理和图形功能。

还有恰如其名的 pyexif:http://pyexif.sourceforge.net/

pyexif python 库和工具旨在从包含 EXIF 信息的 Jpeg 和 Tiff 文件中提取 EXIF 信息。此信息通常包含在使用数字成像设备(如数码相机、数字胶片扫描仪等)创建的图像中。

但是,看起来 pyexif 已经有一段时间没有更新了。他们建议,如果他们的更新不起作用,请检查一下 EXIF-py,所以你应该先尝试一下,因为他们的 sourceforge 页面最近似乎有一些活动,尽管不多。最后,使用 PIL 你可以这样做:

from PIL import Image
from PIL.ExifTags import TAGS

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
    return ret

免责声明

我实际上不知道哪个是最好的,这只是我能用谷歌拼凑起来的。:)

解决方案 2:

我最近一直在使用pyexiv2,它似乎很适合我的需求。也许它也适合您。

注意:pyexiv2 仅适用于 python2,对于 python3 使用py3exiv2

解决方案 3:

基于 Exiv2 的解决方案

Exiv2 (exiv2:http://exiv2.org/ ) 是一个成熟的开源 C++ 库,支持读取和写入多种图像类型(JPEG、PNG、TIFF 和多种原始格式)的元数据,理解标准(Xmp、IPTC 和 Exif)和非标准元数据(“Makernotes”),并在多个平台(Windows、Linux 以及 Mac(部分适用)上运行。

与 exiv2 的 Python 绑定包括:

pyexiv2 的一个优点是它有一个适用于 Python 2.7 的 Windows 版本。gexiv2 的 Windows 版本请求在此处:https://bugzilla.gnome.org/show_bug.cgi ?id=712441

exiv2 及其绑定都是开源的(GPL)。

解决方案 4:

本文介绍了一个使用纯 Python 编写 EXIF 元数据(而不仅仅是读取它们)的 Python 模块。显然,PIL、pyexif 和 EXIF-py 都不支持编写 EXIF。pyexiv2 似乎是前沿的且特定于平台的。

解决方案 5:

使用PIL:)

import os,sys
from PIL import Image
from PIL.ExifTags import TAGS

if __name__ == '__main__':
    for (k,v) in Image.open(sys.argv[1])._getexif().iteritems():
        print '%s = %s' % (TAGS.get(k), v)
    os.system('pause')

解决方案 6:

http://redmine.yorba.org/projects/gexiv2/wiki (已变为https://wiki.gnome.org/Projects/gexiv2 )上的页面现在内容如下:

这对于 Python 2 或 3 来说都同样适用,这使得 GExiv2 成为仅支持 Python 2 的 pyexiv2 的绝佳替代品。

因此,GExiv2 现在同时支持 Python2 和 Python3。

好消息。

解决方案 7:

您还可以查看 Gheorghe Milas 的 jpeg.py 库(http://www.emilas.com/jpeg/),它是“一个用于解析、读取和写入 JPEG EXIF、IPTC 和 COM 元数据的 python 库”。

缺点是,他似乎通过 DynDNS 在动态 IP 上托管他的域名,因此并不总是可用。

解决方案 8:

不知何故,我使用上述 Paolo 的代码时,出现了 _getexif 的 attributeError。我使用的是 Python 2.6.6 和 PIL 1.1.7。_getexif 现在已经过时了吗?

这是一个对我有用的小修改。

from PIL import Image
from PIL.ExifTags import TAGS

def get_exif(fn):
    ret = {}
    i = Image.open(fn)
#    info = i._getexif()
    info = i.tag.tags
    for tag, value in info.items():
        decoded = TAGS.get(tag, tag)
        ret[decoded] = value
    return ret

解决方案 9:

我开始编写自己的基于 PIL 中的代码的小型库。
请点击此处查看。

解决方案 10:

我一直在使用自己的包装器http://www.sno.phy.queensu.ca/~phil/exiftool/
-- 原因是它非常完整,开发人员非常活跃。而无法支持几乎所有图像格式对于需要它的项目来说绝对是个障碍

当然,缺点是它不是 python,所以你需要使用子进程调用,就像我一样。

解决方案 11:

ASPN上有一些 PIL 和 EXIF.py 使用的示例

解决方案 12:

在 Python 2.6 中,模块的位置有所不同。使用以下命令:

import Image    
from ExifTags import TAGS
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1887  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1425  
  在制造业数字化转型的进程中,PLM(产品生命周期管理)系统、ERP(企业资源计划)系统、MES(制造执行系统)以及 CAD(计算机辅助设计)软件都扮演着至关重要的角色。然而,这些系统和软件各自独立运行时,往往难以发挥出最大的协同效应。实现 PLM 系统与 ERP、MES、CAD 的有效集成,成为提升企业整体竞争力、优化...
plm系统的主要功能模块   3  
  产品生命周期管理(PLM)作为一种先进的管理理念和技术,在电子与半导体行业正发挥着日益重要的作用。随着电子与半导体行业的快速发展,产品更新换代速度加快,市场竞争愈发激烈,企业面临着诸多挑战,如缩短产品上市时间、提高产品质量、降低成本等。而PLM的应用为企业应对这些挑战提供了有效的解决方案,展现出巨大的应用价值。提升产品...
plm项目   4  
  PLM(产品生命周期管理)项目管理软件在现代企业的产品研发、生产与运营中扮演着至关重要的角色。它整合了从产品概念设计到退役的全流程数据与流程,助力企业提升效率、降低成本并增强创新能力。随着科技的飞速发展以及企业需求的不断演变,未来十年 PLM 项目管理软件的发展充满了无限可能,值得深入探讨与预测。智能化与自动化趋势智能...
plm产品全生命周期管理   6  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用