TIFFフレームの抽出

タグ イメージ ファイル形式 (略称 TIFF または TIF) は、ラスター グラフィック イメージを保存するためのコンピュータ ファイル形式で、グラフィック アーティスト、出版業界、写真家の間で人気があります。TIFF は「非圧縮」形式であるため、JPEGGIFPNG とは異なります。TIFF ファイルには、複数のチャネルを持つ複数のイメージを保存できます。通常、これらの複数のイメージは、イメージのタイム スタックまたは Z スタック内の連続したフレームを表し、したがって、これらのイメージはすべて同じ次元を持ちます。

TIFF で利用できるその他のオプションは、レイヤーとページです。レイヤーは透明度に例えられ、その上に画像効果や画像が適用され、画像の上または下に配置できます。下の画像に示すように、画像には複数のレイヤーがあります。この記事では、Aspose.Imaging Cloud SDK for .NET を使用して、マルチフレーム TIFF 画像からフレームを抽出する手順について説明します。

フレーム付きTIFF画像

SDKのインストール

Aspose.Imaging Cloud SDK for .NET は、Aspose.Imaging Cloud API をベースに開発されたプログラミング SDK で、.NET 開発者にあらゆる画像操作機能を提供します。最初のステップは、NuGet および GitHub からダウンロードできる SDK をインストールすることです。次のコマンドを実行して、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 にアクセスする便利な方法の 1 つです。したがって、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"

先に進む前に、次の 2 つの API のいずれかを使用してフレームを抽出できることに注意してください。

最初の API では、まず画像を Cloud Storage にアップロードし、その名前を API URL で渡す必要があります。画像パラメータを更新した後、API はレスポンスで更新された画像を返します。

一方、2 番目の API では、リクエスト本文で画像を直接渡すことができます。また、outPath パラメータ値を指定して、更新された画像を Cloud Storage に保存することもできます。ただし、値を指定しないと、レスポンスにはストリーミングされた画像が含まれます。

ここで、次のコマンドを使用して、クラウドストレージにすでにアップロードされている TiffSampleImage.tiff 画像から 4 番目のフレームを抽出します。

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フレームを抽出します。以下の手順に従ってください。

  • 最初のステップは、ClientIDとClientSecretを引数として指定してImagingApiのオブジェクトを作成することです。
  • 入力TIFF画像を定義する文字列オブジェクトを作成する
  • 抽出するフレームを指定するには、整数を作成します
  • 抽出されたフレームの寸法を指定する整数オブジェクトを作成します
  • 次のステップは、入力TIFF名、フレームID、および抽出されたフレーム寸法に関連するその他のパラメータを引数として受け取るオブジェクトGetImageFrameRequestを作成することである。
  • 最後から2番目に、GetImageFrameRequestオブジェクトを入力引数として受け取るImagingApiのGetImageFrame(..)メソッドを呼び出します。
  • 最後に、出力を保存してドライブをロードします
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プロパティには、次のいずれかの値を指定できます。

RotateFlip メソッド (Rotate180FlipNone、Rotate180FlipX、Rotate180FlipXY、Rotate180FlipY、Rotate270FlipNone、Rotate270FlipX、Rotate270FlipXY、Rotate270FlipY、Rotate90FlipNone、Rotate90FlipX、Rotate90FlipXY、Rotate90FlipY、RotateNoneFlipNone、RotateNoneFlipX、RotateNoneFlipXY、RotateNoneFlipY)。デフォルトは RotateNoneFlipNone です。

結論

マルチフレームTIFFからのTIFFフレームの抽出については、上記の記事で説明しました。フレーム抽出以外にも、APIを使用すると、TIFFフレームのサイズ変更TIFFフレームのプロパティの取得TIFFフレームのトリミングTIFFフレームの回転反転などが可能になります。APIの使用中に問題が発生した場合は、無料サポートフォーラムからお気軽にお問い合わせください。

さらに詳しい情報については、以下のリンクをご覧ください。