** HEIC (High-Efficiency Image Container) は、High-Efficiency Image Format HEIF画像を格納できるコンテナーです。 ** XMP はXMLベースのメタデータ標準であり、メタデータプロパティを名前/値のペアとして保存できます。ただし、 EXIF (Exchangeable Image File Format) が標準であり、メタデータプロパティを最も一般的な画像および音声形式で保存する方法を定義します。この記事では、.NETアプリケーション内でC#を使用して HEIF / HEICイメージのXMPおよびEXIPメタデータを抽出、更新、および削除する方法について学習します。
以下のトピックについて説明します。
XMPおよびEXIFメタデータ用の.NETAPI
GroupDocs.Metadataは、.NETアプリケーション内のメタデータ管理を自動化するための.NETAPIを提供します。 APIを使用すると、多くのファイル形式のメタデータの読み取り、更新、追加、クリーンアップ/削除、およびトラバースが可能になります。 APIでは、EXIF、IPTC、XMPなどのさまざまなメタデータ標準がサポートされています。 メタデータ操作でサポートされているファイル形式の完全なリストについては、ドキュメントにアクセスすることもできます。
ダウンロードセクションからDLLまたはMSIインストーラーをダウンロードするか、NuGetを介して.NETアプリケーションにAPIをインストールできます。
PM> Install-Package GroupDocs.Metadata
C#でHEIC/HEIF画像のEXIFデータを読み取る
以下は、HEICおよびHEIF画像のEXIFデータを読み取って抽出する手順です。
- メタデータクラスを使用してHEIFまたはHEICイメージをロードします。
- ルートパッケージを取得します。
- ルートパッケージからEXIFパッケージを取得します。
- EXIFデータプロパティをトラバースします。
- さらに、EXIFパッケージからIFD(画像ファイルディレクトリ) とGPS情報を取得できます。
次のコードは、C#を使用してHEIC画像のEXIFデータ、IFD、およびGPSメタデータ情報を取得する方法を示しています。
// C#でHEIF / HEIC画像のEXIF、EXIF IFD、EXIFGPSパッケージを読む
using (Metadata metadata = new Metadata(@"image.heic"))
{
IExif root = metadata.GetRootPackage() as IExif;
if (root != null && root.ExifPackage != null)
{
const string pattern = "{0} = {1}";
foreach (TiffTag tag in root.ExifPackage.ToList())
{
Console.WriteLine(pattern, tag.TagID, tag.Value);
}
foreach (TiffTag tag in root.ExifPackage.ExifIfdPackage.ToList())
{
Console.WriteLine(pattern, tag.TagID, tag.Value);
}
foreach (TiffTag tag in root.ExifPackage.GpsPackage.ToList())
{
Console.WriteLine(pattern, tag.TagID, tag.Value);
}
}
}
C#でHEIC/HEIF画像のXMPデータを読み取る
次の手順では、HEICまたはHEIFイメージのXMPメタデータを読み取ります。
- メタデータクラスを使用してHEIFまたはHEICイメージをロードします。
- getRootPackageメソッドを使用してルートパッケージを取得します。
- ルートパッケージから、XMPの基本情報を取得できます。
- さらに、DCMIダブリンコア情報を取得できます。
- さらに、getPhotoshopメソッドを使用してPhotoshop情報を取得できます。
次のソースコードは、C#でXMPベーシック、DCMI、およびPhotoshopの情報を取得する方法を示しています。
// C#でHEICおよびHEIF画像のXMP Basic、DublinCore、およびPhotoshopデータを抽出します
using (Metadata metadata = new Metadata(@"xmp.heic"))
{
IXmp root = metadata.GetRootPackage() as IXmp;
if (root != null && root.XmpPackage != null)
{
if (root.XmpPackage.Schemes.XmpBasic != null)
{
Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.CreatorTool);
Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.CreateDate);
Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.ModifyDate);
Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.Label);
Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.Nickname);
// ..。
}
if (root.XmpPackage.Schemes.DublinCore != null)
{
Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Format);
Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Coverage);
Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Identifier);
Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Source);
// ..。
}
if (root.XmpPackage.Schemes.Photoshop != null)
{
Console.WriteLine(root.XmpPackage.Schemes.Photoshop.ColorMode);
Console.WriteLine(root.XmpPackage.Schemes.Photoshop.IccProfile);
Console.WriteLine(root.XmpPackage.Schemes.Photoshop.Country);
Console.WriteLine(root.XmpPackage.Schemes.Photoshop.City);
Console.WriteLine(root.XmpPackage.Schemes.Photoshop.DateCreated);
// ..。
}
// ..。
}
}
同様に、さまざまなXMPプロパティを設定または更新するための多くのセッターメソッドがあります。 独自のキーと値のペアを提供して、カスタムXMPパッケージプロパティを設定することもできます。
C#でHEIC/HEIF画像のEXIFおよびXMPメタデータを削除する
それぞれのEXIFパッケージまたはXMPパッケージをnullに設定するだけで、すべてのメタデータプロパティを削除できます。
次のコードは、C#のHEIC画像のEXIFデータを削除します。
using (Metadata metadata = new Metadata("image.heic"))
{
IExif root = metadata.GetRootPackage() as IExif;
if (root != null)
{
root.ExifPackage = null;
metadata.Save("no-exif-image.heic");
}
}
次のコードは、C#のHEICイメージのXMPデータを削除します。
using (Metadata metadata = new Metadata("image.heic"))
{
IXmp root = metadata.GetRootPackage() as IXmp;
if (root != null)
{
root.XmpPackage = null;
metadata.Save("no-xmp-image.heic");
}
}
無料のAPIライセンスを取得する
評価の制限なしにAPIを使用するために、無料の一時ライセンスを取得できます。
結論
要約すると、C#のHEIF / HEICイメージからEXIFおよびXMPメタデータを抽出、更新、削除する方法を学びました。さらに、これらの画像からIFDおよびGPS情報を取得する方法を見てきました。これで、この情報を簡単に取得でき、GroupDocs.Metadata App Product Familyなどの独自のアプリケーションの構築を開始して、メタデータ情報を自動化できます。
詳細、オプション、および例については、ドキュメントおよびGitHubリポジトリにアクセスしてください。さらに質問がある場合は、サポートフォーラムでお問い合わせください。