HEIC (contenedor de imagen de alta eficiencia) es un contenedor que puede contener imágenes de formato de imagen de alta eficiencia HEIF. XMP es un estándar de metadatos basado en XML que puede almacenar propiedades de metadatos como pares de nombre/valor. Sin embargo, EXIF (Formato de archivo de imagen intercambiable) es el estándar y define cómo almacenar propiedades de metadatos en los formatos de audio e imágenes más comunes. En este artículo, aprenderemos cómo extraer, actualizar y eliminar los metadatos XMP y EXIP de las imágenes HEIF/HEIC usando C# dentro de las aplicaciones .NET.

Los siguientes temas se tratan a continuación:

API .NET para metadatos XMP y EXIF

GroupDocs.Metadata proporciona la API de .NET para automatizar la gestión de metadatos dentro de las aplicaciones de .NET. La API permite leer, actualizar, agregar, limpiar/eliminar y recorrer los metadatos para muchos formatos de archivo. La API admite varios estándares de metadatos como EXIF, IPTC y XMP. También puede visitar la documentación para ver la lista completa de formatos de archivo admitidos para la manipulación de metadatos.

Puede descargar el instalador DLL o MSI desde la sección de descargas o instalar la API en su aplicación .NET a través de NuGet.

PM> Install-Package GroupDocs.Metadata

Leer datos EXIF de imágenes HEIC / HEIF en C#

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.
  • Recorrer las propiedades de 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 C#.

// Leer paquete EXIF, EXIF IFD, EXIF GPS de imágenes HEIF / HEIC en C#
using (Metadata metadata = new Metadata(@"image.heic"))
{
    IExif root = metadata.GetRootPackage() as IExif;
    if (root != null && root.ExifPackage != null)
    {
        const string pattern = "{0} = {1}";

        foreach (TiffTag tag in root.ExifPackage.ToList())
        {
            Console.WriteLine(pattern, tag.TagID, tag.Value);
        }

        foreach (TiffTag tag in root.ExifPackage.ExifIfdPackage.ToList())
        {
            Console.WriteLine(pattern, tag.TagID, tag.Value);
        }

        foreach (TiffTag tag in root.ExifPackage.GpsPackage.ToList())
        {
            Console.WriteLine(pattern, tag.TagID, tag.Value);
        }
    }
}

Leer datos XMP de imágenes HEIC/HEIF en C#

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 C#.

// Extraiga datos XMP Basic, DublinCore y Photoshop de imágenes HEIC y HEIF en C#
using (Metadata metadata = new Metadata(@"xmp.heic"))
{
    IXmp root = metadata.GetRootPackage() as IXmp;
    if (root != null && root.XmpPackage != null)
    {
        if (root.XmpPackage.Schemes.XmpBasic != null)
        {
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.CreatorTool);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.CreateDate);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.ModifyDate);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.Label);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.Nickname);
            // ...
        }
        if (root.XmpPackage.Schemes.DublinCore != null)
        {
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Format);
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Coverage);
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Identifier);
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Source);
            // ...
        }
        if (root.XmpPackage.Schemes.Photoshop != null)
        {
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.ColorMode);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.IccProfile);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.Country);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.City);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.DateCreated);
            // ... 
        }
        // ...
    }
}

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 configurar la propiedad del paquete XMP personalizado.

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

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 en C#.

using (Metadata metadata = new Metadata("image.heic"))
{
	IExif root = metadata.GetRootPackage() as IExif;
	if (root != null)
	{
		root.ExifPackage = null;
		metadata.Save("no-exif-image.heic");
	}
}

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

using (Metadata metadata = new Metadata("image.heic"))
{
	IXmp root = metadata.GetRootPackage() as IXmp;
	if (root != null)
	{
		root.XmpPackage = null;
		metadata.Save("no-xmp-image.heic");
	}
}

Obtenga una licencia de API gratuita

Puede obtener una licencia temporal gratuita para utilizar la API sin las limitaciones de evaluación.

Conclusión

En resumen, hemos aprendido a extraer, actualizar, eliminar metadatos EXIF y XMP de las imágenes HEIF/HEIC en C#. 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 comenzar a crear 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