擷取 TIFF 幀

標籤影像檔案格式,縮寫為 TIFF 或 TIF,是一種用於儲存光柵圖形影像的電腦檔案格式,在圖形藝術家、出版業和攝影師中很流行。 TIFFJPEGGIFPNG 不同,因為它是「未壓縮」格式。 TIFF 檔案能夠儲存多個影像,每個影像都有多個通道。通常,這些多個影像表示影像的時間堆疊或 z 堆疊中的連續幀,因此這些影像中的每一個都具有相同的維度。

我們在 TIFF 中獲得的其他選項是圖層和頁面,其中圖層可以與透明度進行比較,在透明度上套用成像效果或影像並將其放置在影像上方或下方。如下圖所示,該圖像顯示了它具有的多個圖層。在本文中,我們將討論如何使用 Aspose.Imaging Cloud SDK for .NET 從多幀 TIFF 影像中提取幀的步驟。

帶框架的 TIFF 影像

SDK安裝

Aspose.Imaging Cloud SDK for .NET是在Aspose.Imaging Cloud API之上開發的程式設計SDK,為.NET開發人員提供所有影像處理功能。因此,第一步是安裝 SDK,該 SDK 可以從 NuGetGitHub 下載。執行以下命令從 NuGet 庫安裝 SDK。

Install-Package Aspose.Imaging-Cloud

或者作為替代方案,您可以使用 Visual Studio 中的 NuGet 套件管理器新增套件,如下所示。您可以考慮訪問以下連結以獲取有關如何安裝Aspose.Cloud SDK的更多詳細資訊。

Aspose.Imaging雲SDK

現在,為了使用 SDK,下一步是取得您的個人化 ClientID 和 ClientSecret 詳細資料。因此,第一步是透過存取 Aspose.Cloud 儀表板 建立帳戶。如果您有 GitHub 或 Google 帳戶,只需註冊即可。否則,請按一下建立新帳戶按鈕並提供所需資訊。現在使用憑證登入儀表板,並從儀表板展開「應用程式」部分,然後向下捲動至「用戶端憑證」部分以查看用戶端 ID 和用戶端金鑰詳細資料。

ClientID 和 ClientSecret 預覽

使用 cURL 命令提取 TIFF 幀

首先,我們將討論使用 cURL 命令提取 TIFF 幀,因為它們是在任何平台上存取 REST API 的便捷方法之一。無論平台和底層架構的複雜性如何。因此,為了使用 cURL 命令,第一步是根據從 Aspose.Cloud 儀表板檢索到的 ClientID 和 ClientSecret 詳細資訊產生 JSON Web 令牌 (JWT)。請在終端機中執行以下命令來產生 JWT 令牌

curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=718e4235-8866-4ebe-bff4-f5a14a4b6466&client_secret=388e864b819d8b067a8b1cb625a2ea8e" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"

在繼續操作之前,請注意,可以使用以下兩個 API 之一提取幀:

第一個 API 要求您先將圖片上傳到 Cloud Storage,然後在 API URL 中傳遞其名稱。更新影像參數後,API 在回應中傳回更新後的影像。

另一方面,使用第二個API,您可以直接在請求正文中傳遞映像。它還允許您透過指定 outPath 參數值將更新的影像保存在雲端儲存上。但是,如果您不指定該值,則回應將包含串流影像。

現在使用以下命令從已上傳到雲端儲存的 TiffSampleImage.tiff 影像中提取第四幀。

curl -v -X GET "https://api.aspose.cloud/v3.0/imaging/TiffSampleImage.tiff/frames/4?saveOtherFrames=true" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>" \
-o myresultant.tiff

如何在 C# 中提取 TIFF 幀

在本節中,我們將使用 C# .NET 來擷取 TIFF 訊框。請依照以下步驟操作

  • 第一步是建立 ImagingApi 的對象,同時提供 ClientID 和 ClientSecret 作為參數
  • 建立定義輸入 TIFF 影像的字串對象
  • 為了指定要提取的幀,創建一個整數
  • 建立整數物件來指定提取幀的尺寸
  • 下一步是建立一個物件 GetImageFrameRequest,它將輸入 TIFF 名稱、幀 ID 以及與提取的幀尺寸相關的其他參數作為參數
  • 倒數第二個,呼叫 ImagingApi 的 GetImageFrame(..) 方法,該方法將 GetImageFrameRequest 物件作為輸入參數
  • 最後保存輸出加載驅動
string clientID = "718e4235-8866-4ebe-bff4-f5a14a4b6466"; // Get ClientID from https://dashboard.aspose.cloud/
string clientSecret = "388e864b819d8b067a8b1cb625a2ea8e"; // Get CLientSecret from https://dashboard.aspose.cloud/

// 建立 ImagingApi 的實例
Aspose.Imaging.Cloud.Sdk.Api.ImagingApi imagingApi = new ImagingApi(clientSecret, clientID,"https://api.aspose.cloud/","v3.0",false);

// 輸入雲端儲存上可用的 TIFF 影像
String fileName = "TiffSampleImage.tiff";

int? frameId = 5; // Index of a frame
int? newWidth = 300;
int? newHeight = 450;
int? x = 10;
int? y = 10;
int? rectWidth = 200;
int? rectHeight = 300;

string rotateFlipMethod = "RotateNoneFlipNone";

// 結果將僅包含指定的幀
bool? saveOtherFrames = false;

string folder = null; // Input file is saved at the root of the storage
string storage = null; // We are using default Cloud Storage

GetImageFrameRequest getImageFrameRequest = new GetImageFrameRequest(fileName, frameId, newWidth, newHeight,
                                x, y, rectWidth, rectHeight, rotateFlipMethod, saveOtherFrames, folder, storage);

Stream imageFrame = imagingApi.GetImageFrame(getImageFrameRequest);

// 將更新後的影像儲存到本機存儲
using (var fileStream = File.Create("/Users/nayyershahbaz/Downloads/MyResultant.tiff"))
{
    imageFrame.Seek(0, SeekOrigin.Begin);
    imageFrame.CopyTo(fileStream);
}

請注意,rotateFlipMethod 屬性可以具有下列值之一

旋轉翻轉方法(旋轉180FlipNone、旋轉180FlipX、旋轉180FlipXY、旋轉180FlipY、旋轉270FlipNone、旋轉270FlipX、旋轉270FlipXY、旋轉270FlipY、旋轉90FlipNone、旋轉90FlipX、Nlip FlipXY、RotateNoneFlipY)。預設為 RotateNoneFlipNone。

結論

從多幀TIFF中提取TIFF幀在上面的文章中已經解釋過。除了幀提取之外,此API 還允許您調整TIFF 幀的大小獲取TIFF 幀屬性裁剪TIFF 幀旋轉翻轉TIFF 幀 、如果您在使用 API 時遇到任何問題,請隨時透過免費支援論壇與我們聯絡。

我們還建議您通過以下鏈接了解更多信息