TIF の TIFF は、Tag Image File Format の略称で、グラフィック アーティスト、出版業界、写真家によって広く使用されている人気のあるラスター グラフィック画像の 1 つです。 TIFF は、「非圧縮」形式であり、対応する JPEG よりもはるかに多くの画像データを保存できるため、JPEG、GIF、および PNG とは異なります。 TIFF ファイルの顕著な機能の 1 つは、複数の画像 (それぞれに複数のチャネルがある) を画像のタイム スタックまたは Z スタックに連続フレームとして保存できる機能です。そこでこの記事では、Java Cloud SDK を使用してマルチフレーム TIFF 画像からフレームを抽出する方法について詳しく説明します。
TIFF画像処理API
私たちは、ラスター、メタファイル、Photoshop およびその他の サポートされている形式 を編集、操作し、さまざまなファイル形式に変換する機能を提供する画像処理 API を作成しました。ここで TIFF 画像の操作について話しますが、API は TIFF 画像を非常に処理することができます。したがって、この記事の範囲に従って、REST API のラッパーである Aspose.Imaging Cloud SDK for Java を使用します。そのため、その機能を利用するための最初のステップは、pom.xml (Maven ビルド タイプ プロジェクト) に次の情報を含めることにより、Java プロジェクトにその参照を追加することです。
<repositories>
<repository>
<id>aspose-cloud</id>
<name>artifact.aspose-cloud-releases</name>
<url>https://artifact.aspose.cloud/repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-imaging-cloud</artifactId>
<version>22.4</version>
</dependency>
</dependencies>
次のステップは、クラウド ダッシュボード からクライアントの認証情報の詳細を取得することです。Aspose クラウド ダッシュボード のアカウントをお持ちでない場合は、有効な電子メール アドレスを使用して無料アカウントを作成してください。次に、新しく作成したアカウントを使用してログインし、Aspose Cloud Dashboard でクライアント ID とクライアント シークレットを検索/作成します。
JavaでTIFF画像を抽出する方法
Java コード スニペットを使用して tiff ファイルから画像を抽出する方法を詳しく見てみましょう。 API では、抽出したフレームのサイズ変更、切り抜き、回転反転も行うことができることに注意してください。さらに、ブール値パラメーターの 1 つ saveOtherFrames を使用すると、結果に他のすべてのフレームを含めるか、指定したフレームのみを含めるかを指定できます。
- まず、パーソナライズされたクライアント資格情報に基づいて ImagingApi のオブジェクトを作成します。
- 次に、readAllBytes(…) メソッドを使用して最初の TIFF 画像のコンテンツを読み取り、byte[] 配列に渡します。
- 3 番目に、クラウド ストレージ上の TIFF の名前を指定する UploadFileRequest クラスのインスタンスを作成します。
- 次に、uploadFile(…) メソッドを使用して、最初の TIFF 画像をクラウド ストレージにアップロードします。
- 次のステップは、TIFF フレーム インデックス、抽出されたフレームの高さと幅、抽出元を指定し、特定のエンジェルで抽出されたフレームが必要かどうかを指定することです。
- 次に、入力 TIFF 画像と上記で定義したプロパティを指定する GetImageFrameRequest のオブジェクトを作成します。
- 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 画像は、DeskewSampleImage.tif からダウンロードできます。
cURL コマンドを使用した TIFF 画像処理
REST API にアクセスするもう 1 つの便利な方法は、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 の有望な機能をテストするもう 1 つのアプローチは SwaggerUI 経由です。SDK のソース コードを変更したい場合は、GitHub からダウンロードできます (すべての Cloud SDK は MIT の下で開発されています)ライセンス)。
それにもかかわらず、製品ドキュメント は、API が提供する他のエキサイティングな機能について学ぶための素晴らしい情報源です。最後に、API の使用中に問題が発生した場合は、無料で迅速な解決のために当社に連絡することを検討してください。 製品サポート フォーラム。
関連記事
詳細については、次のリンクを参照してください。