HEIC расшифровывается как High-Efficiency Image Container. Это расширение файла для захваченных изображений для некоторых устройств Apple. Это контейнер, который может содержать изображения в формате High-Efficiency Image Format HEIF. В этой статье мы обсудим, как извлекать, обновлять и удалять метаданные EXIF и XMP изображений HEIF/HEIC в приложениях Java.
EXIF, Exchangeable Image File Format — это стандарт, определяющий, как хранить свойства метаданных в наиболее распространенных форматах изображений и аудио. XMP — это стандарт метаданных на основе XML, который может хранить любой набор свойств метаданных в виде пар имя/значение.
Следующие темы рассматриваются ниже
- Metadata Java API для данных EXIF, XMP
- Чтение данных EXIF изображений HEIC/HEIF
- Чтение данных XMP изображений HEIC/HEIF
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.