从多帧图像复制单个帧

以下示例从多帧 TIFF 文件中检索单个帧。 创建 TIFF 文件时,各个帧已添加到页面维度 (请参阅 创建和保存Multiple-Frame图像) 。 该代码显示四个页面中的每一个,并将每个页面保存到单独的 PNG 磁盘文件。

该代码从多帧 TIFF 文件构造 Image 对象。 为了检索) 页 (各个帧,代码调用该 Image 对象的 Image::SelectActiveFrame 方法。 传递给 Image::SelectActiveFrame 方法的第一个参数是 GUID 的地址,该地址指定以前将帧添加到多帧 TIFF 文件中的维度。 GUID FrameDimensionPage 在 Gdiplusimaging.h 中定义。 在该头文件中定义的其他 GUID 为 FrameDimensionTime 和 FrameDimensionResolution。 传递给 Image::SelectActiveFrame 方法的第二个参数是所需页面的从零开始的索引。

该代码依赖于帮助程序函数 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);

下图显示了上述代码显示的各个页面。

显示几何形状、彩色照片、单色照片和其他几何形状的插图