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
- Adicionar pacote de metadados XMP personalizado ao GIF usando C#
- Ler propriedades personalizadas do pacote de metadados XMP usando C#
- Remova o pacote de metadados XMP personalizado usando C#
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.
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:
- Crie uma instância da classe Metadados
- Forneça o caminho da imagem GIF
- GetRootPackage as IXmp standard
- Obtenha todos os pacotes um por um de IXmp.XmpPackage.Packages
- Obtenha NamespaceUri e Prefix para cada pacote
- Chame FindProperties para cada chave de pacote para obter o nome e o valor da propriedade
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:
- Crie uma instância da classe Metadados
- Forneça o caminho da imagem GIF
- GetRootPackage as IXmp standard
- Defina IXMp.XmpPackage como nulo
- Salve o arquivo de saída usando o método Metadata.Save
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.
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.