HEIC significa contenedor de imágenes de alta eficiencia. Es la extensión de archivo de las imágenes capturadas para algunos de los dispositivos Apple. Es un contenedor que puede contener imágenes en formato de imagen de alta eficiencia HEIF. En este artículo, analizaremos cómo extraer, actualizar y eliminar los metadatos EXIF y XMP de las imágenes HEIF/HEIC dentro de las aplicaciones Java.

EXIF, el formato de archivo de imagen intercambiable es el estándar que define cómo almacenar propiedades de metadatos en los formatos de audio e imágenes más comunes. XMP es un estándar de metadatos basado en XML que puede almacenar cualquier conjunto de propiedades de metadatos como pares de nombre/valor.

Los siguientes temas se tratan a continuación

API de Java para metadatos EXIF y XMP

GroupDocs.Metadata proporciona la API de manipulación de metadatos para sus aplicaciones Java. La API permite leer, actualizar, agregar, limpiar/eliminar y recorrer funciones para muchos formatos de archivo. Admite varios estándares de metadatos como EXIF, IPTC y XMP. Entre los formatos de documentos admitidos se encuentran documentos de procesamiento de texto, hojas de cálculo, presentaciones, mensajes de correo electrónico, libros electrónicos, imágenes, dibujos de AutoCAD, archivos de audio y video, torrents. Más precisamente, puede visitar la documentación para ver la lista completa de formatos de archivo admitidos para la manipulación de metadatos.

Descargar y configurar

Obtenga la biblioteca de metadatos de la sección descargas. Para su aplicación Java basada en Maven, simplemente agregue la siguiente configuración pom.xml. Después de esto, puede probar los ejemplos de este artículo y muchos más ejemplos disponibles en GitHub. Para obtener más información, puede visitar la Referencia 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>

Leer datos EXIF de imágenes HEIF / HEIC en Java

Los siguientes son los pasos para leer y extraer datos EXIF de imágenes HEIC y HEIF.

  • Cargue la imagen HEIF o HEIC usando la clase Metadata.
  • Obtener el paquete raíz.
  • Recuperar el paquete EXIF del paquete raíz.
  • Desde el paquete EXIF, puede recorrer las propiedades de los datos EXIF.
  • Además, puede obtener la información IFD (Directorio de archivos de imagen) y GPS del paquete EXIF.

El siguiente código muestra cómo obtener información de metadatos de datos EXIF, IFD y GPS de la imagen HEIC usando Java.

// Lea EXIF, EXIF IFD, EXIF GPS Paquete de imágenes HEIF / HEIC en Java
Metadata metadata = new Metadata("image.heic");
IExif root = (IExif) metadata.getRootPackage();
if (root.getExifPackage() != null) {
    String pattern = "%s : %s";
    // Obtener información del paquete EXIF
    for (TiffTag tag : root.getExifPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // Obtener información del paquete EXIF IFD
    for (TiffTag tag : root.getExifPackage().getExifIfdPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // Obtener información GPS
    for (TiffTag tag : root.getExifPackage().getGpsPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
}

Leer datos XMP de imágenes HEIC / HEIF en Java

Los siguientes pasos leen metadatos XMP de imágenes HEIC o HEIF.

  • Cargue la imagen HEIF o HEIC usando la clase Metadata.
  • Obtenga el paquete raíz mediante el método getRootPackage.
  • Desde el paquete raíz, puede obtener la información básica de XMP.
  • Además, puede obtener la información DCMI Dublin Core.
  • Además, puede obtener información de Photoshop utilizando el método getPhotoshop.

El siguiente código fuente muestra cómo obtener información básica de XMP, DCMI y Photoshop en Java.

// Extraiga datos XMP básico, DublinCore y Photoshop de imágenes heic y heif en Java
Metadata metadata = new Metadata("image.heic");
IXmp root = (IXmp) metadata.getRootPackage();

if (root.getXmpPackage() != null) {
    // XMP básico    
    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());
	// ...
    }
    // Información 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());
	// ...
    }
    // Información de 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());
	// ...
    }
}

Del mismo modo, existen muchos métodos de establecimiento para establecer o actualizar diferentes propiedades XMP. Incluso puede proporcionar su propio par clave-valor para establecer la propiedad del paquete XMP personalizado.

Eliminar metadatos EXIF y XMP de imágenes HEIC/HEIF en Java

Simplemente puede configurar el paquete EXIF respectivo o el paquete XMP en nulo para eliminar todas las propiedades de metadatos.

El siguiente código elimina los datos EXIF de las imágenes HEIC.

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

El siguiente código elimina los datos XMP de las imágenes HEIC.

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

Conclusión

En resumen, hemos aprendido a extraer, actualizar, eliminar metadatos EXIF y XMP de las imágenes HEIF/HEIC en Java. Además, has visto cómo obtener información IFD y GPS de estas imágenes. Ahora puede obtener fácilmente esta información y también continuar creando sus propias aplicaciones como GroupDocs.Metadata App Product Family para automatizar la información de metadatos.

Para obtener más información, opciones y ejemplos, puede visitar la documentación y el repositorio GitHub. Para más consultas, contáctenos en el [foro] de soporte 13.

Ver también