Share via


複数フレームイメージから個々のフレームをコピーする

次の例では、複数フレーム TIFF ファイルから個々のフレームを取得します。 TIFF ファイルが作成されると、個々のフレームが Page ディメンションに追加されました ( 「Multiple-Frame イメージの作成と保存」を参照)。 このコードでは、4 つのページをそれぞれ表示し、各ページを個別の PNG ディスク ファイルに保存します。

このコードは、複数フレームの TIFF ファイルから Image オブジェクトを構築します。 個々のフレーム (ページ) を取得するには、その Image オブジェクトの Image::SelectActiveFrame メソッドを呼び出します。 Image::SelectActiveFrame メソッドに渡される最初の引数は、フレームが以前に複数フレーム TIFF ファイルに追加されたディメンションを指定する GUID のアドレスです。 GUID FrameDimensionPage は Gdiplusimaging.h で定義されています。 そのヘッダー ファイルで定義されているその他の GUID は、FrameDimensionTime と FrameDimensionResolution です。 Image::SelectActiveFrame メソッドに渡される 2 番目の引数は、目的のページの 0 から始まるインデックスです。

このコードは、ヘルパー関数 GetEncoderClsid に依存しています。これは、「 エンコーダーのクラス識別子の取得」に示されています。

GUID   pageGuid = FrameDimensionPage;
CLSID  encoderClsid;
Image  multi(L"Multiframe.tif");

// Get the CLSID of the PNG encoder.
GetEncoderClsid(L"image/png", &encoderClsid);

// Display and save the first page (index 0).
multi.SelectActiveFrame(&pageGuid, 0);
graphics.DrawImage(&multi, 10, 10);
multi.Save(L"Page0.png", &encoderClsid, NULL);

// Display and save the second page.
multi.SelectActiveFrame(&pageGuid, 1);
graphics.DrawImage(&multi, 200, 10);
multi.Save(L"Page1.png", &encoderClsid, NULL);

// Display and save the third page.
multi.SelectActiveFrame(&pageGuid, 2);
graphics.DrawImage(&multi, 10, 150);
multi.Save(L"Page2.png", &encoderClsid, NULL);

// Display and save the fourth page.
multi.SelectActiveFrame(&pageGuid, 3);
graphics.DrawImage(&multi, 200, 150);
multi.Save(L"Page3.png", &encoderClsid, NULL);

次の図は、前のコードで表示される個々のページを示しています。

幾何学的形状、カラー写真、モノクロ写真、および異なる幾何学的形状を示す図