
C-библиотека для разбора, редактирования и сохранения данных EXIF, с акцентом на устранение CVE-2020-0452 в AOSP10. Предоставляет API для извлечения и обработки метаданных.
libexif -------
libexif — это библиотека для разбора, редактирования и сохранения данных EXIF. Она предназначена для замены множества дублирующихся реализаций в утилитах командной строки и программах с графическим интерфейсом.
libexif поддерживает разбор, редактирование и сохранение данных EXIF. Кроме того, в ней есть поддержка gettext. Поддерживаются все теги EXIF, описанные в стандарте EXIF 2.1 (и большинство из 2.2). Также поддерживаются многие maker notes камер Canon, Casio, Epson, Fuji, Nikon, Olympus, Pentax и Sanyo.
libexif написан на чистом C и не требует дополнительных библиотек. Для перевода будет использоваться GNU gettext, если он доступен.
libexif может обрабатывать лишь некоторые maker notes, и даже их — не очень хорошо. Нужно проделать ещё много работы. Обратите внимание, что libmnote объединён с libexif — он больше не требуется.
Мы документируем API libexif с помощью doxygen и публикуем результаты по адресу http://libexif.sourceforge.net/api/
Короткие тестовые программы в каталоге test показывают, как создать корректные данные EXIF с нуля, как сохранить данные EXIF и как загрузить данные EXIF из памяти. В каталоге contrib/examples/ также доступно несколько простых примеров программ. Не стесняйтесь обращаться к нам по адресу [email protected], если у вас есть вопросы по использованию libexif.
Чтобы подключить 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 Отключить создание любой документации --enable-internal-docs Собирать внутреннюю документацию по коду, если доступен Doxygen --enable-ship-binaries Включать Windows DLL в 'make dist'
Некоторые специализированные приложения могут уменьшить размер бинарного файла libexif, задав один или оба из следующих макросов в переменной окружения CPPFLAGS при вызове configure. Каждый из них удаляет определённые виды текстовых строк и констант из бинарного файла. Приложениям, которым требуется доступ к конкретным известным тегам EXIF и которые заранее знают значение своих данных, эти строки не нужны, и они могут сэкономить значительное пространство, исключив их.
-DNO_VERBOSE_TAG_STRINGS Имена и описания тегов EXIF, отладочные сообщения, обязательные поля EXIF (отключает автоматическое исправление тегов) -DNO_VERBOSE_TAG_DATA Имена содержимого перечисляемых значений тегов
Переводы 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 на новый язык, мы рекомендуем присоединиться к одной из вышеуказанных групп переводчиков и воспользоваться созданными ими системами для помощи. Для libexif в Translation Project отказ от ответственности за перевод НЕ требуется; выполняя перевод, вы неявно соглашаетесь предоставить его на тех же условиях лицензии, что и остальная часть libexif (LGPL).
Изначально libexif был написан Кёртисом Гэллоуэем [email protected]. Поскольку первоначальный дизайн не поддерживал редактирование и сохранение, Лутц Мюллер [email protected] переписал libexif с нуля. С тех пор в libexif внесли вклад многие другие люди.
Возможно, вам будут полезны некоторые ссылки, если вы заинтересованы в дополнительной информации об EXIF.