Java-библиотека для чтения и записи метаданных IPTC в JPEG и TIFF
Кто-нибудь знает какую-нибудь библиотеку Java с открытым исходным кодом для чтения и записи метаданных IPTC в JPEG и TIFF? Сейчас я использую Apache Sanselan. К сожалению, он может только читать IPTC, а не писать ( http://commons.apache.org/sanselan/formatsupport.html).
Буду очень признателен за вашу помощь.
Денис.
5 ответов
Посмотрите на IIM4J. использование IIMWriter
записывать теги IPTC IIM в изображения (jpeg).
Это кажется довольно старым вопросом, но следующая полезная информация:
чтение метаданных, таких как EXIF,IPTC и т. д., может быть выполнено с помощью Apache Commons Imaging(ранее Sanselan) или Metadata Extractor(by drew 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)
В Apache Commons Imaging (ранее sanselan) добавлена поддержка записи метаданных IPTC в код репозитория svn для их следующего выпуска. Я подтвердил, что это так в последнем коде магистрали, проверенном в SVN-репо. Код кажется стабильным, поэтому я надеюсь, что релиз не слишком далеко. Для моего проекта это достаточно хорошо.
Для чтения метаданных, я думаю, вам следует взглянуть на " экстрактор метаданных" - проект с открытым исходным кодом (лицензия 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());
}
}
}
Я смотрел себя в прошлом, но не нашел ни одного. Я бы посоветовал взглянуть на проект с открытым исходным кодом, например http://sourceforge.net/projects/image-tagger/ и посмотреть, как они это делают.
Еще одна библиотека с подробной документацией: https://docs.groupdocs.com/display/metadatajava, совместимая с IIMV4.2