Кто-нибудь знает какую-нибудь библиотеку Java с открытым исходным кодом для чтения и записи метаданных IPTC в JPEG и TIFF? Сейчас я использую Apache Sanselan. К сожалению, он может только читать IPTC, а не записывать (http://commons.apache.org/sanselan/formatsupport.html).
Будем очень признательны за помощь.
Денис.
Библиотека Java для чтения и записи метаданных IPTC в форматы JPEG и TIFF.
Ответы (6)
Кажется, это довольно старый вопрос, но ниже приведена некоторая полезная информация:
чтение метаданных, таких как EXIF, IPTC и т. д., может быть выполнено с помощью Apache Commons Imaging (ранее Sanselan) или средства извлечения метаданных (от Draw Noaks).
запись метаданных может быть выполнена с помощью Apache Commons Imaging с использованием следующих классов:
EXIF – ExifRewriter (http://commons.apache.org/proper/commons-imaging/apidocs/org/apache/commons/imaging/formats/jpeg/exif/ExifRewriter.html)
IPTC — JpegIptcRewriter (http://commons.apache.org/proper/commons-imaging/apidocs/org/apache/commons/imaging/formats/jpeg/iptc/JpegIptcRewriter.html)
XMP — JpegXmpRewriter (http://commons.apache.org/proper/commons-imaging/apidocs/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpRewriter.html)
Взгляните на IIM4J. Используйте IIMWriter
для записи IIM-тегов IPTC в изображения (jpeg).
В Apache Commons Imaging (ранее sanselan) добавлена поддержка записи метаданных IPTC в код репозитория svn для своих следующий выпуск. Я проверил, что это так в последнем коде магистрали, извлеченном из репозитория svn. Код кажется стабильным, поэтому я надеюсь, что релиз не за горами. Для моего проекта этого достаточно.
Я искал себя в прошлом, но не нашел. Я бы посоветовал рассмотреть проект с открытым исходным кодом, такой как http://sourceforge.net/projects/image-tagger/ и посмотреть, как они это делают.
Я думаю, что для чтения метаданных вам следует взглянуть на "metadata-extractor" - Проект с открытым исходным кодом (лицензия Apache 2.0), который разрабатывает библиотеку Java для чтения метаданных из файлов изображений.
На данный момент этот проект может получить доступ к следующим метаданным изображений:
- Exif
- IPTC
- XMP
- JFIF / JFXX
- ICC-профили
- Поля фотошопа
"извлекатель метаданных" размещен по адресу код Google.
Вот небольшой простой пример кода для версии 2.4.0:
public void example() throws Exception {
File jpegFile = new File("yourJpgFile.jpg");
Metadata metadata = ImageMetadataReader.readMetadata(jpegFile);
Iterator directory = metadata.getDirectoryIterator();
while (directory.hasNext()) {
Object tag = directory.next();
if (tag instanceof ExifDirectory) {
Iterator tags = ((ExifDirectory) tag).getTagIterator();
while (tags.hasNext()) {
System.out.println("EXIF: "+tags.next().toString());
}
} else if (tag instanceof IptcDirectory) {
Iterator tags = ((IptcDirectory) tag).getTagIterator();
while (tags.hasNext()) {
System.out.println("IPTC: "+tags.next().toString());
}
} else if (tag instanceof JpegDirectory) {
Iterator tags = ((JpegDirectory) tag).getTagIterator();
while (tags.hasNext()) {
System.out.println("JPEG: "+tags.next().toString());
}
} else {
System.err.println(tag.getClass());
}
}
}
Еще одна библиотека с подробной документацией: https://docs.groupdocs.com/display/metadatajava, соответствует IIMV4.2