C# を使用して画像からメタデータを抽出する

メタデータの形式で保存されている高さ、幅、メーカー、モデルなどの画像の詳細をプログラムで追加、編集、削除、または抽出できます。 C# 開発者は、クラウド上でプログラムによって画像のメタデータ情報を簡単に抽出して操作できます。この記事では、C# の REST API を使用して画像のメタデータを抽出および操作する方法を学習します。

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

ドキュメントのメタデータ操作 REST API と .NET SDK

JPEG 画像のメタデータを操作するには、GroupDocs.Metadata Cloud の .NET SDK API を使用します。これにより、ドキュメントや画像ファイル形式からメタデータ プロパティを追加、編集、取得、削除できます。検索条件を定義するだけで、メタデータ クラウド REST API が サポートされているファイル形式 内で指定されたメタデータ操作を処理します。また、クラウド API の ドキュメント メタデータ操作ファミリー メンバー として Java SDK も提供します。

NuGet パッケージ マネージャーから、またはパッケージ マネージャー コンソールで次のコマンドを使用して、GroupDocs.Metadata を Visual Studio プロジェクトにインストールできます。

Install-Package GroupDocs.Metadata-Cloud

手順と利用可能なコード例に従う前に、ダッシュボード からクライアント ID とクライアント シークレットを取得してください。クライアント ID とシークレットを取得したら、以下に示すコードを追加します。

string clientID = "112f0f38-9dae-42d5-b4fc-cc84ae644972";
string clientSecret = "16ad3fe0bdc39c910f57d2fd48a5d618";
string myStorage = "";

Configuration configuration = new Configuration(clientID, clientSecret);
configuration.ApiBaseUrl = "https://api.groupdocs.cloud";

C# の REST API を使用して画像にメタデータを追加する

以下の簡単な手順に従って、画像にメタデータを追加できます。

画像をアップロードする

まず、以下のコードサンプルを使用して、JPEG ファイルをクラウドにアップロードします。

// APIの初期化
FileApi fileApi = new FileApi(configuration);
string path = @"C:\Files";

var file = Directory.GetFiles(path, "input.jpg", SearchOption.AllDirectories).FirstOrDefault();
if (file.Length != 0)
{
    var relativeFilePath = file.Replace(path, string.Empty).Trim(Path.DirectorySeparatorChar);

    var fileStream = File.Open(file, FileMode.Open);

    fileApi.UploadFile(new UploadFileRequest(relativeFilePath, fileStream, myStorage));
    fileStream.Close();
}

その結果、アップロードされた JPEG 画像ファイルは、クラウド上のダッシュボードの ファイル セクション で利用できるようになります。

C# を使用して画像にメタデータを追加する

以下の手順に従って、プログラムで JPEG 画像にメタデータを追加できます。

  • MetadataApi のインスタンスを作成する
  • FileInfo モデルで JPEG 画像ファイルのパスを設定します。
  • AddOptions の定義
  • AddProperty モデルを使用してプロパティの Value と SearchCriteria を設定する
  • AddOptions を使用して AddRequest を作成する
  • MetadataApi.Add() メソッドを呼び出して結果を取得します

次のコード サンプルは、REST API を使用して JPEG 画像にメタデータを追加する方法を示しています。

// APIの初期化
var apiInstance = new MetadataApi(configuration);

// 入力画像パス
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
    FilePath = "input.jpg"
};

// メタデータ追加オプションを定義する
var options = new AddOptions
{
    FileInfo = fileInfo,
    Properties = new List<AddProperty>
    {
        new AddProperty
        {
            Value = "All rights reserved.",
            Type = "String",
            SearchCriteria = new SearchCriteria
            {
                TagOptions = new TagOptions
                {
                    PossibleName = "Copyright"
                }
            },
        }
    }
};

// リクエストの追加
var request = new AddRequest(options);
var response = apiInstance.Add(request);
C# の REST API を使用して画像からメタデータを追加する

C# の REST API を使用して画像からメタデータを追加する

画像をダウンロードする

上記のコード サンプルは、更新された JPEG ファイルをクラウドに保存し、次のコード サンプルを使用してダウンロードできます。

// APIの初期化
var fileApi = new FileApi(configuration);

// デフォルトのパス
var file = "metadata\\add_metadata\\input_jpg\\input.jpg";

// ダウンロードリクエスト
var downloadRequest = new DownloadFileRequest(file, myStorage);

Stream downloadResponse = fileApi.DownloadFile(downloadRequest);
using (var fileStream = File.Create("C:\\Files\\input.jpg"))
{
    downloadResponse.Seek(0, SeekOrigin.Begin);
    downloadResponse.CopyTo(fileStream);
}

C#を使用して画像のメタデータを更新する

以下の手順に従って、JPEG 画像のメタデータをプログラムで更新できます。

  • MetadataApi のインスタンスを作成する
  • FileInfo モデルで JPEG 画像ファイルのパスを設定します。
  • SetOptions を定義する
  • SetProperty モデルを使用してプロパティの NewValue と SearchCriteria を設定する
  • SetOptions を使用して SetRequest を作成する
  • MetadataApi.Set() メソッドを呼び出して結果を取得します

次のコード サンプルは、REST API を使用して JPEG 画像のメタデータを設定する方法を示しています。前述の手順に従ってファイルをアップロードおよびダウンロードしてください。

// APIの初期化
var apiInstance = new MetadataApi(configuration);

// 入力画像パス
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
    FilePath = "input.jpg"
};

// メタデータセットのオプションを定義する
var options = new SetOptions
{
    FileInfo = fileInfo,
    Properties = new List<SetProperty>
    {
        new SetProperty
        {
            NewValue = "Copyright 2021",
            SearchCriteria = new SearchCriteria
            {
                TagOptions = new TagOptions
                {
                    PossibleName = "Copyright"
                }
            },
            Type = "String"
        }
    }
};

// 更新リクエスト
var request = new SetRequest(options);
var response = apiInstance.Set(request);
C# の REST API を使用して画像からメタデータを更新する

C# の REST API を使用して画像からメタデータを更新する

C# を使用して画像からメタデータを削除する

以下の手順に従って、プログラムで JPEG 画像からメタデータを削除できます。

  • MetadataApi のインスタンスを作成する
  • FileInfo モデルで JPEG 画像ファイルのパスを設定します。
  • RemoveOptions の定義
  • 検索条件を設定する
  • RemoveOptions を使用して RemoveRequest を作成する
  • MetadataApi.Remove() メソッドを呼び出して結果を取得します

次のコード サンプルは、REST API を使用して JPEG 画像からメタデータを削除する方法を示しています。前述の手順に従ってファイルをアップロードおよびダウンロードしてください。

// APIの初期化
var apiInstance = new MetadataApi(configuration);

// 入力画像パス
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
    FilePath = "input.jpg"
};

// メタデータ削除オプションを定義する
var options = new RemoveOptions
{
    FileInfo = fileInfo,
    SearchCriteria = new SearchCriteria
    {
        TagOptions = new TagOptions
        {
            PossibleName = "Copyright"
        }
    }
};

// 削除リクエスト
var request = new RemoveRequest(options);
var response = apiInstance.Remove(request);
C# の REST API を使用して画像からメタデータを削除する

C# の REST API を使用して画像からメタデータを削除する

C# を使用して画像からメタデータを抽出する

以下の手順に従って、プログラムで JPEG 画像からメタデータを抽出できます。

  • MetadataApi のインスタンスを作成する
  • FileInfo モデルで JPEG 画像ファイルのパスを設定します。
  • 抽出オプションの定義
  • ExtractOptions を使用して ExtractRequest を作成する
  • MetadataApi.Extract() メソッドを呼び出して結果を取得します

次のコード サンプルは、REST API を使用して JPEG 画像からメタデータを抽出する方法を示しています。前述の手順に従ってファイルをアップロードしてください。

// APIの初期化
var apiInstance = new MetadataApi(configuration);

// ソースファイル
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
    FilePath = "input.jpg"
};

// 抽出オプション
var options = new ExtractOptions
{
    FileInfo = fileInfo
};

// 抽出リクエスト
var request = new ExtractRequest(options);
var response = apiInstance.Extract(request);

// 抽出されたメタデータ
if (response.MetadataTree.InnerPackages != null)
{
    var innerPackages = response.MetadataTree.InnerPackages;
   for (int i = 0; i < innerPackages.Count; i++)
    {
        Console.WriteLine($"\nPackage: {innerPackages[i].PackageName}");
        var packageProperties = innerPackages[i].PackageProperties;
       for (int j = 0; j < packageProperties.Count; j++)
        {
            Console.WriteLine(packageProperties[j].Name + " : " + packageProperties[j].Value);
        }
    }
}
画像メタデータ

画像メタデータ

上記のコード サンプルでは、次の出力が生成されます。

Package: FileFormat
FileFormat : 9
MimeType : image/jpeg
ByteOrder : 1
Width : 480
Height : 360

Package: Xmp
http://ns.microsoft.com/photo/1.0/ :

Package: Exif
Exif.GpsIfd :
Exif.ExifIfd :
Make : Canon
Model : Canon PowerShot S40
Orientation : System.Int32[]
XResolution : System.Double[]
YResolution : System.Double[]
ResolutionUnit : System.Int32[]
DateTime : 2003:12:14 12:01:44
YCbCrPositioning : System.Int32[]
ExifIfd : System.Int64[]
Exif.Thumbnail : System.Byte[] 

オンラインで試す

上記の API を使用して開発された、次の JPEG メタデータ操作の無料オンライン ツールをお試しください。 https://products.groupdocs.app/metadata/jpeg

結論

この記事では、クラウド上の画像からメタデータを追加、編集、削除、抽出する方法を学習しました。この記事では、プログラムで JPEG 画像ファイルをクラウドにアップロードし、クラウドからダウンロードする方法についても説明しました。 ドキュメント を使用すると、GroupDocs.Metadata Manipulation Cloud API についてさらに詳しく学ぶことができます。また、ブラウザーを通じて API を直接視覚化し操作できるようにする API リファレンス セクションも提供しています。不明な点がある場合は、フォーラム でお気軽にお問い合わせください。

関連項目