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 Java de metadatos para EXIF, datos XMP
- Leer datos EXIF de imágenes HEIC/HEIF
- Leer datos XMP de imágenes HEIC/HEIF
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.