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

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

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

Java API для добавления или удаления пользовательских метаданных XMP

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

Вы можете загрузить JAR API или просто добавить следующую конфигурацию pom.xml в свое приложение Java на основе Maven, чтобы попробовать приведенные ниже примеры кода.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-metadata</artifactId>
        <version>21.8</version> 
</dependency>

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

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

  • Во-первых, загрузите изображение GIF, используя класс Metadata.
  • Затем вызовите Metadata.getRootPackage() как стандартный IXmp, чтобы получить корневой пакет.
  • Создайте экземпляр класса XmpPackage, чтобы создать новый пакет.
  • Теперь задайте различные свойства для определения пакета, такие как Prefix и NamespaceUri.
  • Затем вызовите метод Set(), чтобы установить определяемые пользователем свойства метаданных в паре Имя/Значение.
  • Создайте экземпляр класса XmpPacketWrapper, который содержит сериализованный пакет XMP.
  • Теперь вызовите метод XmpPacketWrapper.AddPackage(), чтобы добавить созданный пользовательский пакет XmpPackage.
  • Используйте метод IXmp.setXmpPackage() для установки пакета метаданных XMP.
  • Наконец, сохраните выходной файл с помощью метода Metadata.save().

В следующем примере кода показано, как создать и добавить пользовательский пакет метаданных XMP в изображение GIF с помощью Java.

// В этом примере кода показано, как создать и добавить пользовательский пакет метаданных XMP в изображение GIF.
// Создайте экземпляр класса метаданных
Metadata metadata = new Metadata("C:\\Files\\xmp.gif");

// Получить корневые пакеты
IXmp root = (IXmp)metadata.getRootPackage();

// Создать оболочку пакета Xmp
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", new Date().toString());
custom.set("gd:Company", XmpArray.from(new String[] { "Aspose", "GroupDocs" }, XmpArrayType.Ordered));

// Добавить пользовательский пакет в Xmp Packet Wrapper
packet.addPackage(custom);

// Обновить пакет Xmp
root.setXmpPackage(packet);

// Сохраните файл
metadata.save("C:\\Files\\xmp_output.gif");

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

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

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

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

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

  • Во-первых, загрузите изображение GIF, используя класс Metadata.
  • Затем вызовите Metadata.getRootPackage() как стандартный IXmp, чтобы получить корневой пакет. It provides access to all metadata properties extracted from the file.
  • Вызовите метод IXmp.getXmpPackage(), чтобы проверить, существует ли XmpPackage.
  • Теперь получите массив XmpPackage, вызвав метод IXmp.getXmpPackage().getPackages().
  • Переберите все пакеты и вызовите методы XmpPackage.getNamespaceUri() и XmpPackage.getPrefix(), чтобы отобразить URI пространства имен пакета и префикс для каждого пакета.
  • Переберите все ключи, возвращаемые методом XmpPackage.getKeys(), чтобы вывести значение метаданных.
  • Наконец, вызовите метод XmpPackage.findProperties() для каждого ключа пакета, чтобы выполнить рекурсивный поиск и найти свойство метаданных, соответствующее ключу пакета.

В следующем примере кода показано, как прочитать все свойства, определенные в пользовательском пакете XMP, с помощью Java.

// В этом примере кода показано, как прочитать все свойства, определенные в пользовательском пакете XMP.
// Создайте экземпляр класса метаданных
Metadata metadata = new Metadata("C:\\Files\\xmp_output.gif");

// Получить корневые пакеты
IXmp root = (IXmp)metadata.getRootPackage();
if (root.getXmpPackage() != null)
{
  // Получить пакеты Xmp
  XmpPackage[] packages = root.getXmpPackage().getPackages();
  
  // Показать детали пакета
  for (XmpPackage pkg : packages )
  {
    System.out.println(pkg.getNamespaceUri());
    System.out.println(pkg.getPrefix());

    for(String keys : pkg.getKeys())
    {
      MetadataProperty property = pkg.findProperties(new WithNameSpecification(keys)).get_Item(0);
      System.out.println(property.getName() + " : " + property.getValue());
    }
  }
}

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

https://groupdocs.com
gd
gd:Copyright: Copyright (C) 2021 GroupDocs. All Rights Reserved.
gd:CreationDate: Sat Oct 16 00:13:15 PKT 2021
gd:Company: <rdf:Seq><rdf:li>Aspose</rdf:li><rdf:li>GroupDocs</rdf:li></rdf:Seq>

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

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

  • Во-первых, загрузите изображение GIF, используя класс Metadata.
  • Затем вызовите Metadata.getRootPackage() как стандартный IXmp, чтобы получить корневой пакет.
  • Теперь используйте IXmp.setXmpPackage(), чтобы установить XmpPackege как нулевой.
  • Наконец, сохраните выходной файл с помощью метода Metadata.save().

В следующем примере кода показано, как удалить пакет метаданных XMP из изображения GIF с помощью Java.

// В этом примере кода показано, как удалить пакет метаданных XMP из изображения GIF.
// Создайте экземпляр класса метаданных
Metadata metadata = new Metadata("C:\\Files\\xmp_output.gif");

// Получить корневые пакеты
IXmp root = (IXmp)metadata.getRootPackage();

// Установите для пакета значение null
root.setXmpPackage(null);

// Сохранить изображение
metadata.save("C:\\Files\\xmp_output_Removed.gif");

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

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

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

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

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

Вывод

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

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