HEIC означає High-Efficiency Image Container. Це розширення файлу для зроблених зображень для деяких пристроїв Apple. Це контейнер, який може містити зображення високоефективного формату зображень HEIF. У цій статті ми обговоримо, як видобувати, оновлювати та видаляти метадані EXIF і XMP зображень HEIF/HEIC у програмах Java.

EXIF, обмінний формат файлу зображень — це стандарт, який визначає, як зберігати властивості метаданих у найпоширеніших форматах зображень і аудіо. 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 Basic, DublinCore і Photoshop із зображень heic і heif у Java
Metadata metadata = new Metadata("image.heic");
IXmp root = (IXmp) metadata.getRootPackage();

if (root.getXmpPackage() != null) {
    // XMP Basic    
    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());
	// ...
    }
    // Інформація DublinCore
    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());
	// ...
    }
    // Інформація про Photoshop
    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.

Дивись також