Agregue o elimine metadatos XMP personalizados de GIF usando C#

Los metadatos de la plataforma extensible de metadatos (XMP) están codificados como texto con formato XML. El modelo de datos XMP definido se puede utilizar para almacenar cualquier conjunto de propiedades de metadatos en forma de par nombre/valor. Puede agregar un paquete de metadatos XMP personalizado a sus imágenes mediante programación. En este artículo, aprenderá cómo agregar o eliminar metadatos XMP personalizados de GIF usando C#.

Los siguientes temas se discuten/tratan en este artículo:

API de C# para agregar o eliminar metadatos XMP

Usaré la API GroupDocs.Metadata para .NET para agregar o eliminar el paquete de metadatos XMP personalizado. Le permite agregar, editar, recuperar y eliminar propiedades de metadatos de documentos y formatos de archivo de imagen. La API funciona con los estándares de metadatos más notables, como XMP, EXIF, IPTC, bloques de recursos de imágenes, ID3 y propiedades de metadatos personalizados. Se puede utilizar para desarrollar aplicaciones en cualquier entorno de desarrollo que se dirija a la plataforma .NET.

Puede descargar la DLL de la API o instalarla mediante NuGet.

Install-Package GroupDocs.Metadata

Agregar paquete de metadatos XMP personalizado a GIF usando C#

Puede crear y agregar fácilmente un paquete XMP totalmente personalizado que contenga propiedades definidas por el usuario siguiendo los sencillos pasos que se mencionan a continuación:

  • Crea una instancia de la clase Metadata
  • Proporcione la ruta de la imagen GIF
  • Obtener paquete raíz as IXmp standard
  • Crear una instancia de la clase XmpPackage
  • Proporcione el prefijo del paquete y NamespaceUri
  • Establecer propiedades en el par Nombre/Valor utilizando el método Set
  • Cree una instancia de la clase XmpPacketWrapper
  • Llame al método AddPackage y pase el XmpPackage creado
  • Asignar XmpPacketWrapper creado a IXMp.XmpPackage
  • Guarde el archivo de salida usando el método Metadata.Save

El siguiente ejemplo de código muestra cómo crear y agregar un paquete de metadatos XMP personalizado a una imagen GIF usando C#.

using (Metadata metadata = new Metadata(@"C:\Files\xmp.gif")) {

  IXmp root = (IXmp)metadata.GetRootPackage();
  XmpPacketWrapper packet = new XmpPacketWrapper();

  XmpPackage custom = new XmpPackage("gd", "https://groupdocs.com");
  custom.Set("gd:Copyright", "Copyright (C) 2021 GroupDocs. All Rights Reserved.");
  custom.Set("gd:CreationDate", DateTime.Now.ToString());
  custom.Set("gd:Company", XmpArray.From(new String[] { "Aspose", "GroupDocs" }, XmpArrayType.Ordered));

  packet.AddPackage(custom);
  root.XmpPackage = packet;
  metadata.Save(@"C:\Files\xmp_output.gif");
}

El ejemplo de código anterior agregará el paquete de metadatos XMP a la imagen de entrada. ExifTool lee los siguientes metadatos de la imagen GIF de salida generada.

Agregue el paquete de metadatos XMP a GIF usando C#

Agregue el paquete de metadatos XMP a GIF usando C#

La interfaz IXMP expone la propiedad XmpPackage{.brokenlink} para obtener o establecer el paquete de metadatos XMP.

La clase Metadata proporciona el método GetRootPackage para obtener el paquete raíz que brinda acceso a todas las propiedades de metadatos extraídas del archivo.

La clase XmpPackage proporciona varias propiedades para definir el paquete, como Prefix, NamespaceUri y Keys. Esta clase también proporciona métodos Set para establecer el nombre/valor de las propiedades de metadatos definidas por el usuario.

La clase XmpPacketWrapper contiene un paquete XMP serializado. El método AddPackage de esta clase permite agregar el paquete personalizado definido.

Puede encontrar más detalles sobre “Trabajar con metadatos XMP” en la documentación.

Lea las propiedades de metadatos del paquete XMP personalizado usando C#

Puede leer fácilmente todas las propiedades definidas por el usuario del paquete XMP personalizado siguiendo los sencillos pasos que se mencionan a continuación:

El siguiente ejemplo de código muestra cómo leer todas las propiedades definidas en el paquete XMP personalizado mediante C#.

string file = @"C:\Files\xmp_output.gif";
using (Metadata metadata = new Metadata(file)) 
{
  IXmp root = (IXmp)metadata.GetRootPackage();

  if (root.XmpPackage != null)
  {
    foreach (var package in root.XmpPackage.Packages)
    {
      Console.WriteLine(package.NamespaceUri);
      Console.WriteLine(package.Prefix);

      foreach(var keys in package.Keys)
      {
        var property = package.FindProperties(p => p.Name == keys).FirstOrDefault();
        Console.WriteLine(property.Name + " : " + property.Value);
      }
    }
  }
}

El ejemplo de código anterior producirá el siguiente resultado:

https://groupdocs.com
gd
gd:Copyright: Copyright (C) 2021 GroupDocs. All Rights Reserved.
gd:CreationDate: 04/05/2021 2:26:17 am
gd:Company: <rdf:Seq><rdf:li>Aspose</rdf:li><rdf:li>GroupDocs</rdf:li></rdf:Seq>

El método FindProperties de la clase XmpPackage busca y encuentra recursivamente las propiedades de metadatos que satisfacen el predicado especificado.

Eliminar el paquete XMP personalizado usando C#

Puede eliminar el paquete XMP de las imágenes GIF siguiendo los sencillos pasos que se mencionan a continuación:

El siguiente ejemplo de código muestra cómo eliminar el paquete de metadatos XMP de una imagen GIF usando C#.

using (Metadata metadata = new Metadata(@"C:\Files\xmp_output.gif"))
{
  IXmp root = (IXmp)metadata.GetRootPackage();
  root.XmpPackage = null;
  metadata.Save(@"C:\Files\xmp_output_Removed.gif");
}

El ejemplo de código anterior eliminará el paquete de metadatos XMP de la imagen de entrada. ExifTool lee los siguientes metadatos de la imagen GIF de salida generada.

Eliminar el paquete de metadatos XMP de GIF usando C#

Eliminar el paquete de metadatos XMP de GIF usando C#

Obtenga una licencia gratis

Puede probar la API sin limitaciones de evaluación solicitando una licencia temporal gratuita.

Conclusión

En este artículo, aprendió cómo agregar o eliminar metadatos de paquetes XMP personalizados de imágenes GIF usando C#. También aprendió a leer las propiedades del paquete XMP usando C#. Además, puede obtener información sobre GroupDocs.Metadata para la API de .NET utilizando la documentación. En caso de cualquier ambigüedad, no dude en contactarnos en el foro.

Ver también