Копирование отдельных кадров из многокадрового изображения

В следующем примере извлекаются отдельные кадры из TIFF-файла с несколькими кадрами. При создании TIFF-файла отдельные кадры были добавлены в измерение Page (см. раздел Создание и сохранение Multiple-Frame изображения). Код отображает каждую из четырех страниц и сохраняет каждую страницу в отдельный файл png-диска.

Код создает объект Image из многокадрового TIFF-файла. Чтобы получить отдельные кадры (страницы), код вызывает метод Image::SelectActiveFrame этого объекта Image . Первый аргумент, передаваемый методу Image::SelectActiveFrame , — это адрес GUID, указывающий измерение, в котором ранее были добавлены кадры в TIFF-файл с несколькими кадрами. Guid FrameDimensionPage определяется в Gdiplusimaging.h. Другие guid 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);

На следующем рисунке показаны отдельные страницы, отображаемые в приведенном выше коде.

иллюстрация, показывающая геометрическую фигуру, цветную фотографию, монохромную фотографию и другую геометрическую фигуру