다음을 통해 공유


다중 프레임 이미지에서 개별 프레임 복사

다음 예제에서는 다중 프레임 TIFF 파일에서 개별 프레임을 검색합니다. TIFF 파일을 만들 때 개별 프레임이 페이지 차원에 추가되었습니다( Multiple-Frame 이미지 만들기 및 저장 참조). 이 코드는 4개의 페이지를 각각 표시하고 각 페이지를 별도의 PNG 디스크 파일에 저장합니다.

이 코드는 다중 프레임 TIFF 파일에서 Image 개체를 생성합니다. 개별 프레임(페이지)을 검색하기 위해 코드는 해당 Image 개체의 Image::SelectActiveFrame 메서드를 호출합니다. Image::SelectActiveFrame 메서드에 전달된 첫 번째 인수는 프레임이 이전에 다중 프레임 TIFF 파일에 추가된 차원을 지정하는 GUID의 주소입니다. GUID FrameDimensionPage는 Gdiplusimaging.h에 정의되어 있습니다. 해당 헤더 파일에 정의된 다른 GUID는 FrameDimensionTime 및 FrameDimensionResolution입니다. Image::SelectActiveFrame 메서드에 전달된 두 번째 인수는 원하는 페이지의 인덱스(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);

다음 그림에서는 앞의 코드에 표시된 개별 페이지를 보여 줍니다.

기하학적 도형, 색 사진, 단색 사진 및 다른 기하 도형을 보여 주는 그림