複数フレームイメージから個々のフレームをコピーする
次の例では、複数フレーム 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);
次の図は、前のコードで表示される個々のページを示しています。