libexif -------
libexif 是一个用于解析、编辑和保存 EXIF 数据的库。它旨在取代命令行工具和图形界面(GUI)程序中大量重复的实现。
libexif 支持 EXIF 数据的解析、编辑和保存。此外,它还支持 gettext。EXIF 标准 2.1(以及 2.2 中的大部分)中描述的所有 EXIF 标签均受支持。来自佳能(Canon)、卡西欧(Casio)、爱普生(Epson)、富士(Fuji)、尼康(Nikon)、奥林巴斯(Olympus)、宾得(Pentax)和三洋(Sanyo)相机的许多厂商备注(maker notes)也得到支持。
libexif 使用纯 C 语言编写,不需要任何额外的库。如果可用,将使用 GNU gettext 进行语言翻译。
libexif 只能处理部分厂商备注(maker notes),而且处理得也不算好。还有更多工作要做。请注意,libmnote 已合并到 libexif 中——不再需要单独使用。
我们已使用 doxygen 对 libexif API 进行了文档化,并将在 http://libexif.sourceforge.net/api/ 上提供相关结果。
test 目录中的简短测试程序演示了如何从零开始创建有效的 EXIF 数据、如何保存 EXIF 数据以及如何从内存中的数据加载 EXIF 数据。contrib/examples/ 目录中还提供了一些简单的示例程序。如果您对如何使用 libexif 有任何疑问,请随时通过 [email protected] 与我们联系。
要将 libexif 链接到您自己的软件包中,我们建议使用 pkgconfig 工具(参见 http://www.freedesktop.org/wiki/Software/pkg-config/ 为方便起见,libexif 既提供了 libexif-uninstalled.pc,也会安装 libexif.pc。
目前,我知道有以下 libexif 前端程序:
如果您希望将程序迁移到 libexif 或为其添加 EXIF 支持,请随时联系作者。
我知道有以下使用 libexif 或受其启发的库:
要让 libexif 成功构建,具体操作取决于您的环境。从源代码 tar 包构建通常需要执行以下命令:
./configure make sudo make install
从 CVS 中的源代码构建时,通常需要执行类似以下的操作:
gettextize mv po/Makevars.template po/Makevars aclocal -I auto-m4 -I m4m autoheader libtoolize --force automake --add-missing autoconf ./configure make
或者,通常只需要:
autoreconf -i ./configure make
除了标准参数外,configure 还接受几个 libexif 特有的参数:
--disable-docs To disable producing any documentation --enable-internal-docs Build internal code docs if Doxygen available --enable-ship-binaries To include Windows DLLs in 'make dist'
某些特殊应用可以在配置时通过在 CPPFLAGS 环境变量中设置以下一个或两个宏来减小 libexif 二进制文件的大小。每个宏都会从二进制文件中移除特定类型的文本字符串和常量。需要访问特定的、已知的 EXIF 标签并事先知道其数据含义的应用不需要这些字符串,移除它们可以节省大量空间。
-DNO_VERBOSE_TAG_STRINGS Names and descriptions of EXIF tags, debug messages, mandatory EXIF fields (disabling auto-tag-fixup) -DNO_VERBOSE_TAG_DATA Names of enumerated tag data contents
libexif 的翻译由志愿者独立完成,他们要么直接参与 libexif 项目,要么通过两个翻译协调网站之一进行,即 Translation Project http://translationproject.org/domain/libexif.html 和 Launchpad https://translations.edge.launchpad.net/ubuntu/precise/+source/libexif/+pots/libexif-12。任何由 Translation Project 协调的语言翻译更新都必须通过其网站进行,但所有其他语言既可以通过 Launchpad(推荐)更新,也可以直接将更新发送到 libexif 开发者邮件列表。截至撰写本文时,以下语言必须通过 Translation Project 更新:cs da de es fr it ja nl pl sk sv uk vi
如果您有兴趣将 libexif 翻译成新的语言,我们建议您加入上述某个翻译小组,并利用他们已构建的辅助系统。在 Translation Project 中,libexif 不需要翻译免责声明;进行翻译即表示您默认同意在与 libexif 其余部分相同的许可条款(LGPL)下提供该翻译。
libexif 最初由 Curtis Galloway [email protected] 编写。由于最初的设计不支持编辑和保存,Lutz Mueller [email protected] 从头重写了 libexif。此后,又有许多人向 libexif 做出贡献。
如果您想进一步了解 EXIF 相关信息,以下链接或许值得一看。