如何提取tiff圖像

如何從 TIFF 文件中提取圖像

TIF 的 TIFF 是 Tag Image File Format 的縮寫,是流行的光柵圖形圖像之一,被圖形藝術家、出版業和攝影師廣泛使用。 TIFF 不同於 JPEGGIFPNG,因為它是一種“未壓縮”格式,可以存儲比 JPEG 格式更多的圖像數據。現在,TIFF 文件的顯著特徵之一是它能夠將多個圖像(每個圖像都有多個通道)存儲為圖像時間堆棧或 z 堆棧中的連續幀。因此,在本文中,我們將詳細探討如何使用 Java Cloud SDK 從多幀 TIFF 圖像中提取幀。

TIFF 圖像處理 API

我們創建了一個圖像處理 API,提供編輯、操作和轉換光柵、圖元文件、photoshop 和其他支持的格式 為各種文件格式的功能。現在談論 TIFF 圖像處理,API 非常有能力處理 TIFF 圖像。因此,根據本文的範圍,我們將使用 Aspose.Imaging Cloud SDK for Java,它是 REST API 的包裝器。因此,利用其功能的第一步是通過在 pom.xml(maven 構建類型項目)中包含以下信息來在 java 項目中添加其引用。

<repositories> 
    <repository>
        <id>aspose-cloud</id>
        <name>artifact.aspose-cloud-releases</name>
        <url>http://artifact.aspose.cloud/repo</url>
    </repository>   
</repositories>

<dependencies>
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-imaging-cloud</artifactId>
        <version>22.4</version>
    </dependency>
</dependencies>

下一步是從 Cloud Dashboard 獲取客戶端憑據詳細信息,如果您沒有 Aspose Cloud Dashboard 的帳戶,請通過有效的電子郵件地址創建一個免費帳戶。現在使用新創建的帳戶登錄並在 Aspose Cloud Dashboard 中查找/創建客戶端 ID 和客戶端密碼。

如何在 Java 中提取 TIFF 圖像

讓我們探索有關如何使用 Java 代碼片段從 tiff 文件中提取圖像的詳細信息。請注意,API 還允許您調整大小、裁剪和旋轉翻轉提取的幀。此外,布爾參數 saveOtherFrames 之一允許您指定結果是包含所有其他幀還是僅包含指定幀。

  • 首先,根據個性化客戶端憑證創建一個 ImagingApi 對象
  • 其次,使用 readAllBytes(…) 方法讀取第一個 TIFF 圖像的內容並傳遞給 byte[] 數組
  • 第三,創建一個 UploadFileRequest 類的實例,我們在其中指定 TIFF over Cloud storage 的名稱
  • 現在使用 uploadFile(…) 方法將第一個 TIFF 圖像上傳到雲存儲
  • 下一步是指定 TIFF 幀索引、提取幀的高度和寬度、提取原點,並指定是否需要提取幀的特定角度
  • 現在創建一個 GetImageFrameRequest 對象,我們在其中指定輸入 TIFF 圖像和上面定義的屬性
  • 調用 ImagingAPI 的 getImageFrame(…) 方法獲取 TIFF 幀
  • 使用 FileOutputStream 對象將提取的幀保存到本地驅動器
// 從 https://dashboard.aspose.cloud/ 獲取 ClientID 和 ClientSecret
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";

// 創建成像對象
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);

// 從本地系統加載第一個 TIFF 圖像
File file1 = new File("DeskewSampleImage.tif");
byte[] imageStream = Files.readAllBytes(file1.toPath());
			
// 創建文件上傳請求對象
UploadFileRequest uploadRequest = new UploadFileRequest("input.tiff",imageStream,null);
// 將第一張 TIFF 圖像上傳到雲存儲
imageApi.uploadFile(uploadRequest);

Integer frameId = 0; // Frame number inside TIFF
// 提取框架的新寬度和高度
Integer newWidth = 1000;
Integer newHeight = 1400;

// 開始幀提取的起點
Integer x = 10;
Integer y = 10;

// 要提取幀的矩形區域
Integer rectWidth = 900;
Integer rectHeight = 800;

// 指定提取的 TIFF 幀的旋轉角度
String rotateFlipMethod = "Rotate90FlipY";
// 結果僅包含指定的幀而不包含其他幀
Boolean saveOtherFrames = false;

// 創建請求對像以根據指定的詳細信息提取 tiff 幀
GetImageFrameRequest getImageFrameRequest = new GetImageFrameRequest("input.tiff", frameId, newWidth, newHeight,
                    x, y, rectWidth, rectHeight, null, saveOtherFrames, null, null);

// 提取的幀在響應流中返回
byte[] updatedImage = imageApi.getImageFrame(getImageFrameRequest);

// 將提取的 TIFF 幀保存在本地存儲中
FileOutputStream fos = new FileOutputStream("/Users/s4/Documents/" + "Extracted-TIFF.tiff");
fos.write(updatedImage);
fos.close();
提取 tiff 幀

獲取 TIFF 幀預覽

上例中使用的示例 TIFF 圖像可以從 DeskewSampleImage.tif 下載。

使用 cURL 命令處理 TIFF 圖像

訪問 REST API 的另一種便捷方式是通過 cURL 命令。由於Aspose.Imaging Cloud是基於REST架構的,所以我們也可以使用cURL命令提取tiff圖像幀。現在,此活動的先決條件是使用以下命令生成 JWT 訪問令牌(基於客戶端憑據)。

curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=bb959721-5780-4be6-be35-ff5c3a6aa4a2&client_secret=4d84d5f6584160cbd91dba1fe145db14" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"

在生成 JWT 令牌後,我們需要執行以下命令來提取 TIFF 圖像幀。

curl -v -X GET "https://api.aspose.cloud/v3.0/imaging/first.tiff/frames/0?newWidth=1000&newHeight=1200&x=10&y=10&rectWidth=800&rectHeight=800&saveOtherFrames=false" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>" \
-o ExtractedFrame.tiff

結論

至此,我們已經了解了有關如何從 tiff 文件中提取圖像的所有必要細節。我們探索了使用 Java Java 代碼片段或通過 cURL 命令提取 TIFF 幀的選項。另一種測試 API 有前途的功能的方法是通過 SwaggerUI,如果您想修改 SDK 的源代碼,您可以從 GitHub 下載(我們所有的 Cloud SDK 都是在 MIT 下開發的執照)。

儘管如此,產品文檔 是了解 API 提供的其他令人興奮的功能的絕佳信息來源 最後,如果您在使用 API 時遇到任何問題,您可以考慮通過免費聯繫我們快速解決產品支持論壇

相關文章

請訪問以下鏈接以了解更多信息: