使用 C# 从 GIF 添加或删除自定义 XMP 元数据

可扩展元数据平台 (XMP) 元数据被编码为 XML 格式的文本。定义的 XMP 数据模型可用于以名称/值对的形式存储任何一组元数据属性。您可以以编程方式将自定义 XMP 元数据包添加到图像中。在本文中,您将学习如何使用 C# 在 GIF 中添加或删除自定义 XMP 元数据

本文讨论/涵盖了以下主题:

用于添加或删除 XMP 元数据的 C# API

我将使用 GroupDocs.Metadata for .NET API 添加或删除自定义 XMP 元数据包。它允许您从文档和图像文件格式中添加、编辑、检索和删除元数据属性。该 API 可与最著名的元数据标准配合使用,例如内置、XMP、EXIF、IPTC、图像资源块、ID3 和自定义元数据属性。它可用于在任何面向 .NET 平台的开发环境中开发应用程序。

您可以 下载 API 的 DLL 或使用 NuGet 安装它。

Install-Package GroupDocs.Metadata

使用 C# 将自定义 XMP 元数据包添加到 GIF

您可以按照下面提到的简单步骤轻松创建和添加包含用户定义属性的完全自定义 XMP 包:

以下代码示例展示了如何使用 C# 创建自定义 XMP 元数据包并将其添加到 GIF 图像。

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");
}

上述代码示例应将 XMP 元数据包添加到输入图像。 ExifTool 从生成的输出 GIF 图像中读取以下元数据。

使用 C# 将 XMP 元数据包添加到 GIF

使用 C# 将 XMP 元数据包添加到 GIF

IXMP 接口公开 XmpPackage{.broken_link} 属性以获取或设置 XMP 元数据包。

Metadata 类提供 GetRootPackage 方法来获取根包,该根包提供对从文件中提取的所有元数据属性的访问。

XmpPackage 类提供了各种属性来定义包,例如 PrefixNamespaceUriKeys。此类还提供 Set 方法来设置用户定义的元数据属性的名称/值。

XmpPacketWrapper 类包含序列化的 XMP 包。此类的 AddPackage 方法允许添加已定义的自定义包。

您可以在文档中找到有关“使用 XMP 元数据”的更多详细信息。

使用 C# 读取自定义 XMP 包元数据属性

您可以按照下面提到的简单步骤轻松读取所有自定义 XMP 包用户定义的属性:

以下代码示例展示了如何使用 C# 读取自定义 XMP 包中定义的所有属性。

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);
      }
    }
  }
}

上述代码示例应产生以下输出:

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>

XmpPackage 类的 FindProperties 方法递归搜索并找到满足指定谓词的元数据属性。

使用 C# 删除自定义 XMP 包

您可以按照下面提到的简单步骤从 GIF 图像中删除 XMP 包:

以下代码示例展示了如何使用 C# 从 GIF 图像中删除 XMP 元数据包。

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");
}

上述代码示例应从输入图像中删除 XMP 元数据包。 ExifTool 从生成的输出 GIF 图像中读取以下元数据。

使用 C# 从 GIF 中删除 XMP 元数据包

使用 C# 从 GIF 中删除 XMP 元数据包

获得免费许可证

您可以通过申请 免费的临时许可证 来试用该 API,而不受评估限制。

结论

在本文中,您学习了如何使用 C# 从 GIF 图像中添加或删除自定义 XMP 包元数据。您还学习了如何使用 C# 读取 XMP 包属性。此外,您可以使用 文档 了解用于 .NET API 的 GroupDocs.Metadata。如有任何歧义,请随时在 论坛 上与我们联系。

也可以看看