使用 C# 從圖像中提取元數據

您可以通過編程方式添加、編輯、刪除或提取以元數據形式存儲的圖像詳細信息,例如高度、寬度、品牌、型號等。作為 C# 開發人員,您可以輕鬆地在雲端以編程方式提取和操作圖像的元數據信息。在本文中,您將學習如何在 C# 中使用 REST API 提取和操作圖像的元數據。

本文討論/涵蓋以下主題:

文檔元數據操作 REST API 和 .NET SDK

為了處理 JPEG 圖像的元數據,我將使用 GroupDocs.Metadata Cloud 的 .NET SDK API。它允許您從文檔和圖像文件格式中添加、編輯、檢索和刪除元數據屬性。您只需定義搜索條件,元數據 Cloud REST API 將負責 支持的文件格式 中指定的元數據操作。它還為 Cloud 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 文件上傳到雲端:

// 接口初始化
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圖片文件路徑
  • 定義添加選項
  • 使用 AddProperty 模型為屬性設置 Value 和 SearchCriteria
  • 使用 AddOptions 創建 AddRequest
  • 調用MetadataApi.Add()方法獲取結果

以下代碼示例展示瞭如何使用 REST API 將元數據添加到 JPEG 圖像。

// 接口初始化
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 文件保存在雲端,可以使用以下代碼示例下載:

// 接口初始化
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圖片文件路徑
  • 定義設置選項
  • 使用 SetProperty 模型為屬性設置 NewValue 和 SearchCriteria
  • 使用 SetOptions 創建 SetRequest
  • 通過調用MetadataApi.Set()方法獲取結果

以下代碼示例展示瞭如何使用 REST API 設置 JPEG 圖像的元數據。請按照前面提到的步驟上傳和下載文件。

// 接口初始化
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 創建 RemoveRequest
  • 通過調用 MetadataApi.Remove() 方法獲取結果

以下代碼示例展示瞭如何使用 REST API 從 JPEG 圖像中刪除元數據。請按照前面提到的步驟上傳和下載文件。

// 接口初始化
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
  • 使用 ExtractOptions 創建 ExtractRequest
  • 通過調用 MetadataApi.Extract() 方法獲取結果

以下代碼示例展示瞭如何使用 REST API 從 JPEG 圖像中提取元數據。請按照前面提到的步驟上傳文件。

// 接口初始化
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 並與之交互。如有任何歧義,請隨時在論壇上與我們聯繫。

也可以看看