Adicionar ou remover metadados XMP personalizados do GIF usando C#

Os metadados da Extensible Metadata Platform (XMP) são codificados como texto formatado em XML. O modelo de dados XMP definido pode ser usado para armazenar qualquer conjunto de propriedades de metadados na forma de par nome/valor. Você pode adicionar um pacote de metadados XMP personalizado às suas imagens programaticamente. Neste artigo, você aprenderá como adicionar ou remover metadados XMP personalizados do GIF usando C#.

Os seguintes tópicos são discutidos/abordados neste artigo:

API C# para adicionar ou remover metadados XMP

Usarei a API GroupDocs.Metadata for .NET para adicionar ou remover o pacote de metadados XMP personalizado. Ele permite adicionar, editar, recuperar e remover propriedades de metadados de documentos e formatos de arquivo de imagem. A API funciona com os padrões de metadados mais notáveis, como built-in, XMP, EXIF, IPTC, Blocos de Recursos de Imagem, ID3 e propriedades de metadados personalizadas. Ele pode ser usado para desenvolver aplicativos em qualquer ambiente de desenvolvimento voltado para a plataforma .NET.

Você pode baixar a DLL da API ou instalá-la usando o NuGet.

Install-Package GroupDocs.Metadata

Adicionar pacote de metadados XMP personalizado ao GIF usando C#

Você pode criar e adicionar facilmente um pacote XMP totalmente personalizado contendo propriedades definidas pelo usuário seguindo as etapas simples mencionadas abaixo:

  • Crie uma instância da classe Metadados
  • Forneça o caminho da imagem GIF
  • GetRootPackage as IXmp standard
  • Crie uma instância da classe XmpPackage
  • Forneça o prefixo do pacote e o NamespaceUri
  • Defina as propriedades no par Nome/Valor usando o método Set
  • Crie uma instância da classe XmpPacketWrapper
  • Chame o método AddPackage e passe o XmpPackage criado
  • Atribua o XmpPacketWrapper criado ao IXMp.XmpPackage
  • Salve o arquivo de saída usando o método Metadata.Save

O exemplo de código a seguir mostra como criar e adicionar um pacote de metadados XMP personalizado à imagem 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");
}

O exemplo de código acima deve adicionar o pacote de metadados XMP à imagem de entrada. O ExifTool lê os seguintes metadados da imagem GIF de saída gerada.

Adicione o pacote de metadados XMP ao GIF usando C#

Adicione o pacote de metadados XMP ao GIF usando C#

A interface IXMP expõe a propriedade XmpPackage{.brokenlink} para obter ou definir o pacote de metadados XMP.

A classe Metadata fornece o método GetRootPackage para obter o pacote raiz que fornece acesso a todas as propriedades de metadados extraídas do arquivo.

A classe XmpPackage fornece várias propriedades para definir o pacote, como Prefix, NamespaceUri e Keys. Essa classe também fornece métodos Set para definir nome/valor para propriedades de metadados definidas pelo usuário.

A classe XmpPacketWrapper contém o pacote XMP serializado. O método AddPackage desta classe permite adicionar o pacote personalizado definido.

Você pode encontrar mais detalhes sobre “Trabalhar com metadados XMP” na documentação.

Ler propriedades de metadados do pacote XMP personalizado usando C#

Você pode ler facilmente todas as propriedades definidas pelo usuário do pacote XMP personalizado seguindo as etapas simples mencionadas abaixo:

O exemplo de código a seguir mostra como ler todas as propriedades definidas no pacote XMP personalizado usando 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);
      }
    }
  }
}

O exemplo de código acima deve produzir a seguinte saída:

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>

O método FindProperties da classe XmpPackage procura e localiza recursivamente as propriedades de metadados que satisfazem o predicado especificado.

Remova o pacote XMP personalizado usando C#

Você pode remover o pacote XMP de imagens GIF seguindo as etapas simples mencionadas abaixo:

O exemplo de código a seguir mostra como remover o pacote de metadados XMP da imagem 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");
}

A amostra de código acima deve remover o pacote de metadados XMP da imagem de entrada. O ExifTool lê os seguintes metadados da imagem GIF de saída gerada.

Remova o pacote de metadados XMP do GIF usando C#

Remova o pacote de metadados XMP do GIF usando C#

Obtenha uma licença gratuita

Você pode experimentar a API sem limitações de avaliação solicitando uma licença temporária gratuita.

Conclusão

Neste artigo, você aprendeu como adicionar ou remover metadados de pacotes XMP personalizados de imagens GIF usando C#. Você também aprendeu a ler as propriedades do pacote XMP usando C#. Além disso, você pode aprender sobre GroupDocs.Metadata para .NET API usando a documentação. Em caso de qualquer ambiguidade, não hesite em contactar-nos no fórum.

Veja também