Javaを使用してGIFからカスタムXMPメタデータを追加または削除する

Extensible Metadata Platform(XMP)データモデルを使用して、XML形式のテキストとしてエンコードされた名前/値ペアの形式でメタデータプロパティの任意のセットを格納できます。 Java開発者は、カスタムXMPメタデータパッケージをプログラムで画像に簡単に追加できます。この記事では、Javaを使用してGIFからカスタムXMPメタデータを追加または削除する方法を学習します。

この記事では、次のトピックについて説明/取り上げています。

カスタムXMPメタデータを追加または削除するJavaAPI

GIF画像からカスタムXMPメタデータパッケージを追加または削除するには、GroupDocs.Metadata for JavaAPIを使用します。 サポートされているドキュメントと画像ファイル形式からメタデータプロパティを追加、編集、取得、および削除できます。 APIは、組み込みのメタデータプロパティ(作成者、作成日など)、フォーマット固有のメタデータプロパティ(XMP、EXIFIPTC、画像リソースブロックなど)などの最も注目すべきメタデータ標準で動作します。 ID3、およびカスタムメタデータプロパティ。

APIのJARをダウンロードするか、MavenベースのJavaアプリケーションに次のpom.xml構成を追加して、以下のコード例を試すことができます。

<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>

Javaを使用してカスタムXMPメタデータパッケージをGIFに追加する

以下に示す簡単な手順に従って、ユーザー定義のプロパティを使用して完全にカスタムのXMPパッケージを作成および追加できます。

  • まず、Metadataクラスを使用してGIF画像を読み込みます。
  • 次に、Metadata.getRootPackage()IXmp標準として呼び出して、ルートパッケージを取得します。
  • XmpPackageクラスのインスタンスを作成して、新しいパッケージを作成します。
  • 次に、PrefixNamespaceUriなど、さまざまなプロパティを設定してパッケージを定義します。
  • 次に、Set()メソッドを呼び出して、名前と値のペアでユーザー定義のメタデータプロパティを設定します。
  • シリアル化されたXMPパッケージを含むXmpPacketWrapperクラスのインスタンスを作成します。
  • 次に、XmpPacketWrapper.AddPackage()メソッドを呼び出して、作成したカスタムXmpPackageを追加します。
  • IXmp.setXmpPackage()メソッドを使用して、XMPメタデータパッケージを設定します。
  • 最後に、Metadata.save()メソッドを使用して出力ファイルを保存します。

次のコードサンプルは、Javaを使用してカスタムXMPメタデータパッケージを作成し、GIFイメージに追加する方法を示しています。

// このコード例は、カスタム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));

// XmpPacketWrapperにカスタムパッケージを追加する
packet.addPackage(custom);

// XmpPackageを更新します
root.setXmpPackage(packet);

// ファイルを保存します
metadata.save("C:\\Files\\xmp_output.gif");

上記のコードサンプルは、XMPメタデータパッケージを入力画像に追加します。 ExifToolによって生成された出力を以下に示します。

Javaを使用してカスタムXMPメタデータパッケージをGIFに追加する

Javaを使用してカスタムXMPメタデータパッケージをGIFに追加する

Javaを使用してカスタムXMPパッケージメタデータプロパティを読み取る

以下の手順に従って、カスタムXMPパッケージのすべてのユーザー定義プロパティを読み取ることができます。

  • まず、Metadataクラスを使用してGIF画像を読み込みます。
  • 次に、Metadata.getRootPackage()IXmp標準として呼び出して、ルートパッケージを取得します。 It provides access to all metadata properties extracted from the file.
  • IXmp.getXmpPackage()メソッドを呼び出して、XmpPackageが存在するかどうかを確認します。
  • 次に、IXmp.getXmpPackage().getPackages()メソッドを呼び出して、XmpPackageの配列を取得します。
  • すべてのパッケージを繰り返し処理し、XmpPackage.getNamespaceUri()メソッドとXmpPackage.getPrefix()メソッドを呼び出して、パッケージの名前空間URIと各パッケージのプレフィックスを表示します。
  • XmpPackage.getKeys()メソッドによって返されるすべてのキーをループして、メタデータ値を出力します
  • 最後に、パッケージキーごとにXmpPackage.findProperties()メソッドを呼び出して、パッケージキーに一致するメタデータプロパティを再帰的に検索して見つけます。

次のコードサンプルは、Javaを使用してカスタムXMPパッケージで定義されたすべてのプロパティを読み取る方法を示しています。

// このコード例は、カスタム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>

Javaを使用してカスタムXMPパッケージを削除する

以下の手順に従って、GIF画像からXMPパッケージを削除できます。

  • まず、Metadataクラスを使用してGIF画像を読み込みます。
  • 次に、Metadata.getRootPackage()IXmp標準として呼び出して、ルートパッケージを取得します。
  • ここで、IXmp.setXmpPackage()を使用して、XmpPackegeをnullに設定します
  • 最後に、Metadata.save()メソッドを使用して出力ファイルを保存します

次のコードサンプルは、Javaを使用してGIFイメージからXMPメタデータパッケージを削除する方法を示しています。

// このコード例は、GIF画像からXMPメタデータパッケージを削除する方法を示しています。
// メタデータクラスのインスタンスを作成します
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画像から次のメタデータを読み取ります。

Javaを使用してカスタムXMPパッケージを削除します。

Javaを使用してカスタムXMPパッケージを削除します。

無料ライセンスを取得する

無料の一時ライセンスをリクエストすることで、評価の制限なしにAPIを試すことができます。

結論

この記事では、Javaを使用してカスタムXMPパッケージメタデータをGIF画像に追加する方法を学習しました。さらに、XMPパッケージのプロパティを読み取り、プログラムでGIF画像から削除する方法を見てきました。 ドキュメントを使用して、JavaAPIのGroupDocs.Metadataについて詳しく知ることができます。ご不明な点がございましたら、フォーラムまでお気軽にお問い合わせください。

関連項目