
Библиотека на C для разбора, редактирования и сохранения метаданных EXIF из изображений JPEG, с акцентом на эксплуатацию CVE-2016-6328 для Android 10.
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 Включать DLL для Windows в 'make dist'
Некоторые специализированные приложения могут уменьшить размер двоичного файла libexif, установив один или оба следующих макроса в переменной окружения CPPFLAGS во время настройки. Каждый из них удаляет определённые типы текстовых строк и констант из двоичного файла. Приложениям, которым требуется доступ к определённым известным тегам 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 на новый язык, мы рекомендуем присоединиться к одной из вышеуказанных переводческих групп и воспользоваться созданными ими системами для помощи вам. Для Translation Project не требуется отказ от прав на перевод для libexif; выполняя перевод, вы неявно соглашаетесь предоставить его на тех же условиях лицензии, что и остальная часть libexif (LGPL).
libexif изначально была написана Кёртисом Гэллоуэем [email protected]. Из-за того, что оригинальный дизайн не поддерживал редактирование и сохранение, Лутц Мюллер [email protected] переписал libexif с нуля. С тех пор многие другие люди внесли свой вклад в libexif.
Вот несколько ссылок, которые вы, возможно, захотите проверить, если заинтересованы в дополнительной информации о EXIF.