Добавить или удалить пользовательские метаданные XMP из GIF с помощью C#

Метаданные Extensible Metadata Platform (XMP) кодируются как текст в формате XML. Определенную модель данных XMP можно использовать для хранения любого набора свойств метаданных в виде пары имя/значение. Вы можете программно добавить собственный пакет метаданных XMP к своим изображениям. В этой статье вы узнаете, как добавлять или удалять пользовательские метаданные XMP из GIF с помощью C#.

В этой статье обсуждаются/рассматриваются следующие темы:

C# API для добавления или удаления метаданных XMP

Я буду использовать API GroupDocs.Metadata for .NET для добавления или удаления пользовательского пакета метаданных XMP. Он позволяет добавлять, редактировать, извлекать и удалять свойства метаданных из документов и форматов файлов изображений. API работает с наиболее известными стандартами метаданных, такими как встроенные, XMP, EXIF, IPTC, блоки ресурсов изображения, ID3 и настраиваемые свойства метаданных. Его можно использовать для разработки приложений в любой среде разработки, ориентированной на платформу .NET.

Вы можете либо скачать DLL API, либо установить его с помощью NuGet.

Install-Package GroupDocs.Metadata

Добавить пользовательский пакет метаданных XMP в GIF с помощью C#

Вы можете легко создать и добавить полностью настраиваемый пакет XMP, содержащий определяемые пользователем свойства, выполнив простые шаги, указанные ниже:

  • Создайте экземпляр класса Метаданные.
  • Укажите путь к изображению GIF
  • GetRootPackage as IXmp standard
  • Создайте экземпляр класса XmpPackage.
  • Укажите префикс пакета и NamespaceUri.
  • Задайте свойства в паре Имя/Значение, используя метод Set
  • Создайте экземпляр класса XmpPacketWrapper.
  • Вызовите метод AddPackage и передайте созданный XmpPackage
  • Назначьте созданный XmpPacketWrapper IXMp.XmpPackage
  • Сохраните выходной файл, используя метод Metadata.Save.

В следующем примере кода показано, как создать и добавить пользовательский пакет метаданных XMP в изображение GIF с помощью 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");
}

Приведенный выше пример кода должен добавить пакет метаданных XMP к входному изображению. ExifTool считывает следующие метаданные из сгенерированного выходного изображения GIF.

Добавьте пакет метаданных XMP в GIF с помощью C#

Добавьте пакет метаданных XMP в GIF с помощью C#

Интерфейс IXMP предоставляет свойство XmpPackage{.brokenlink} для получения или установки пакета метаданных XMP.

Класс Metadata предоставляет метод GetRootPackage для получения корневого пакета, предоставляющего доступ ко всем свойствам метаданных, извлеченным из файла.

Класс XmpPackage предоставляет различные свойства для определения пакета, такие как Prefix, NamespaceUri и Keys. Этот класс также предоставляет методы Set для установки имени/значения для определяемых пользователем свойств метаданных.

Класс XmpPacketWrapper содержит сериализованный пакет XMP. Метод AddPackage этого класса позволяет добавить определенный пользовательский пакет.

Вы можете найти более подробную информацию о «Работа с метаданными XMP» в документации.

Чтение свойств метаданных пользовательских пакетов XMP с помощью C#

Вы можете легко прочитать все пользовательские свойства пользовательского пакета XMP, выполнив простые шаги, указанные ниже:

  • Создайте экземпляр класса Метаданные.
  • Укажите путь к изображению GIF
  • GetRootPackage as IXmp standard
  • Получите все пакеты один за другим из IXmp.XmpPackage.Packages.
  • Получить NamespaceUri и префикс для каждого пакета
  • Вызовите FindProperties для каждого ключа пакета, чтобы получить имя и значение свойства.

В следующем примере кода показано, как прочитать все свойства, определенные в пользовательском пакете XMP, с помощью 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);
      }
    }
  }
}

Приведенный выше пример кода должен выводить следующий результат:

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>

Метод FindProperties класса XmpPackage рекурсивно ищет и находит свойства метаданных, удовлетворяющие указанному предикату.

Удалить пользовательский пакет XMP с помощью С#

Вы можете удалить пакет XMP из изображений GIF, выполнив простые шаги, указанные ниже:

  • Создайте экземпляр класса Метаданные.
  • Укажите путь к изображению GIF
  • GetRootPackage as IXmp standard
  • Установите для IXMp.XmpPackage значение null
  • Сохраните выходной файл, используя метод Metadata.Save.

В следующем примере кода показано, как удалить пакет метаданных XMP из изображения GIF с помощью 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");
}

Приведенный выше пример кода должен удалить пакет метаданных XMP из входного изображения. ExifTool считывает следующие метаданные из сгенерированного выходного изображения GIF.

Удалить пакет метаданных XMP из GIF с помощью С#

Удалить пакет метаданных XMP из GIF с помощью С#

Получить бесплатную лицензию

Вы можете попробовать API без ограничений по ознакомительной версии, запросив бесплатную временную лицензию.

Вывод

В этой статье вы узнали, как добавлять или удалять пользовательские метаданные пакета XMP из изображений GIF с помощью C#. Вы также узнали, как читать свойства пакета XMP с помощью C#. Кроме того, вы можете узнать о GroupDocs.Metadata for .NET API, используя документацию. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на форуме.

Смотрите также