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

Другие вопросы по тегам