HEIC расшифровывается как High-Efficiency Image Container. Это расширение файла для захваченных изображений для некоторых устройств Apple. Это контейнер, который может содержать изображения в формате High-Efficiency Image Format HEIF. В этой статье мы обсудим, как извлекать, обновлять и удалять метаданные EXIF и XMP изображений HEIF/HEIC в приложениях Java.

EXIF, Exchangeable Image File Format — это стандарт, определяющий, как хранить свойства метаданных в наиболее распространенных форматах изображений и аудио. XMP — это стандарт метаданных на основе XML, который может хранить любой набор свойств метаданных в виде пар имя/значение.

Следующие темы рассматриваются ниже

Java API для метаданных EXIF и XMP

GroupDocs.Metadata предоставляет API для работы с метаданными для ваших приложений Java. API позволяет читать, обновлять, добавлять, очищать/удалять и просматривать функции для многих форматов файлов. Он поддерживает различные стандарты метаданных, такие как EXIF, IPTC и XMP. Текстовые документы, электронные таблицы, презентации, сообщения электронной почты, электронные книги, изображения, чертежи AutoCAD, аудио- и видеофайлы, торренты входят в число поддерживаемых форматов документов. Точнее, вы можете посетить документацию для получения полного списка поддерживаемых форматов файлов для манипулирования метаданными.

Загрузите и настройте

Получите библиотеку метаданных из раздела загрузки. Для вашего Java-приложения на основе Maven просто добавьте следующую конфигурацию pom.xml. После этого вы можете попробовать примеры из этой статьи, а также многие другие примеры, доступные на GitHub. Для получения подробной информации вы можете посетить Справочник по API.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-metadata</artifactId>
        <version>21.4</version> 
</dependency>

Чтение данных EXIF изображений HEIF / HEIC в Java

Ниже приведены шаги для чтения и извлечения данных EXIF изображений HEIC и HEIF.

  • Загрузите изображение HEIF или HEIC, используя класс метаданных.
  • Получить корневой пакет.
  • Получить пакет EXIF из корневого пакета.
  • Из пакета EXIF вы можете просматривать свойства данных EXIF.
  • Кроме того, вы можете получить информацию IFD (каталог файлов изображений) и GPS из пакета EXIF.

В следующем коде показано, как получить данные EXIF, метаданные IFD и GPS изображения HEIC с помощью Java.

// Чтение EXIF, EXIF IFD, EXIF GPS Пакет изображений HEIF / HEIC на Java
Metadata metadata = new Metadata("image.heic");
IExif root = (IExif) metadata.getRootPackage();
if (root.getExifPackage() != null) {
    String pattern = "%s : %s";
    // Получить информацию о пакете EXIF
    for (TiffTag tag : root.getExifPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // Получить информацию о пакете EXIF IFD
    for (TiffTag tag : root.getExifPackage().getExifIfdPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // Получить информацию GPS
    for (TiffTag tag : root.getExifPackage().getGpsPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
}

Чтение данных XMP изображений HEIC / HEIF в Java

Следующие шаги считывают метаданные XMP изображений HEIC или HEIF.

  • Загрузите изображение HEIF или HEIC, используя класс метаданных.
  • Получить корневой пакет с помощью метода getRootPackage.
  • Из корневого пакета вы можете получить основную информацию о XMP.
  • Кроме того, вы можете получить информацию о DCMI Dublin Core.
  • Кроме того, вы можете получить информацию о Photoshop с помощью метода getPhotoshop.

В следующем исходном коде показано, как получить информацию XMP basic, DCMI и Photoshop в Java.

// Извлечение данных Базовый XMP, DublinCore и Photoshop из изображений heic и heif в Java
Metadata metadata = new Metadata("image.heic");
IXmp root = (IXmp) metadata.getRootPackage();

if (root.getXmpPackage() != null) {
    // Базовый XMP    
    if (root.getXmpPackage().getSchemes().getXmpBasic() != null) {
        XmpBasicPackage xmpBasicPackage = root.getXmpPackage().getSchemes().getXmpBasic();
	System.out.println("Creator Tool : " + xmpBasicPackage.getCreatorTool());
	System.out.println("Create Date : " + xmpBasicPackage.getCreateDate());
	System.out.println("Modify Date : " + xmpBasicPackage.getModifyDate());
	System.out.println("Label : " + xmpBasicPackage.getLabel());
	System.out.println("Nick Name: " + xmpBasicPackage.getNickname());
	// ...
    }
    // ДублинОсновная информация
    if (root.getXmpPackage().getSchemes().getDublinCore() != null) {
	XmpDublinCorePackage xmpDublinCorePackage = root.getXmpPackage().getSchemes().getDublinCore();
	System.out.println("Format : " + xmpDublinCorePackage.getFormat());
	System.out.println("Coverage :" + xmpDublinCorePackage.getCoverage());
	System.out.println("Identifier : " + xmpDublinCorePackage.getIdentifier());
	System.out.println("Source : " + xmpDublinCorePackage.getSource());
	// ...
    }
    // Информация о фотошопе
    if (root.getXmpPackage().getSchemes().getPhotoshop() != null) {
	XmpPhotoshopPackage xmpPhotoshopPackage = root.getXmpPackage().getSchemes().getPhotoshop();
	System.out.println("Color Mode : " + xmpPhotoshopPackage.getColorMode());
	System.out.println("ICC Profile : " + xmpPhotoshopPackage.getIccProfile());
	System.out.println("Country : " + xmpPhotoshopPackage.getCountry());
	System.out.println("City : " + xmpPhotoshopPackage.getCity());
	System.out.println("Date Created : " + xmpPhotoshopPackage.getDateCreated());
	// ...
    }
}

Точно так же существует множество методов установки для установки или обновления различных свойств XMP. Вы даже можете указать свою собственную пару ключ-значение для установить пользовательское свойство пакета XMP.

Удалить метаданные EXIF и XMP изображений HEIC/HEIF в Java

Вы можете просто установить для соответствующего пакета EXIF или пакета XMP значение null, чтобы удалить все свойства метаданных.

Следующий код удаляет данные EXIF изображений HEIC.

try (Metadata metadata = new Metadata("image.heic")) {
	IExif root = (IExif) metadata.getRootPackage();
	root.setExifPackage(null);
	metadata.save("no-exif-image.heic");
}

Следующий код удаляет данные XMP изображений HEIC.

try (Metadata metadata = new Metadata("image.heic")) {
	IXmp root = (IXmp) metadata.getRootPackage();
	root.setXmpPackage(null);
	metadata.save("no-xmp-image.heic");
}

Вывод

Подводя итог, мы научились извлекать, обновлять, удалять метаданные EXIF и XMP из изображений HEIF/HEIC в Java. Кроме того, вы видели, как получить информацию IFD и GPS из этих изображений. Теперь вы можете легко получить эту информацию, а также приступить к созданию собственных приложений, таких как GroupDocs.Metadata App Product Family, для автоматизации информации о метаданных.

Для получения дополнительной информации, вариантов и примеров вы можете посетить документацию и репозиторий GitHub. Если у вас возникнут дополнительные вопросы, свяжитесь с нами на [форуме] поддержки]13.

Смотрите также