Image::Save(IStream*,constCLSID*,constEncoderParameters*) 메서드(gdiplusheaders.h)
Image::Save 메서드는 이 이미지를 스트림에 저장합니다.
구문
Status Save(
[in] IStream *stream,
[in] const CLSID *clsidEncoder,
[in] const EncoderParameters *encoderParams
);
매개 변수
[in] stream
형식: IStream*
IStream COM 인터페이스에 대한 포인터입니다. IStream 구현에는 Seek, Read, Write 및 Stat 메서드가 포함되어야 합니다.
[in] clsidEncoder
형식: const CLSID*
이미지를 저장하는 데 사용할 인코더를 지정하는 CLSID 에 대한 포인터입니다.
[in] encoderParams
형식: const EncoderParameters*
선택 사항입니다. 인코더에서 사용하는 매개 변수를 보유하는 EncoderParameters 개체에 대한 포인터입니다. 기본값은 NULL입니다.
반환 값
형식: 상태
메서드가 성공하면 Status 열거형의 요소인 Ok를 반환합니다.
메서드가 실패하면 Status 열거형의 다른 요소 중 하나를 반환합니다.
설명
이미지를 생성하는 데 사용된 것과 동일한 스트림에 이미지를 저장하지 마세요. 이렇게 하면 스트림이 손상될 수 있습니다.
Image image(myStream);
...
image.Save(myStream, ...); // Do not do this.
예제
다음 예제에서는 두 개의 Image 개체를 만듭니다. 하나는 JPEG 파일에서 생성되고 다른 하나는 PNG 파일에서 생성되었습니다. 이 코드는 두 개의 스트림이 있는 복합 파일을 만들고 두 이미지를 해당 스트림에 저장합니다.
Status MakeCompoundFile()
{
IStorage* pIStorage = NULL;
IStream* pIStream1 = NULL;
IStream* pIStream2 = NULL;
HRESULT hr;
Status stat = Ok;
// Create two Image objects from existing files.
Image image1(L"Crayons.jpg");
Image image2(L"Mosaic.png");
hr = CoInitialize(NULL);
if(FAILED(hr))
goto Exit;
// Create a compound file object, and get
// a pointer to its IStorage interface.
hr = StgCreateDocfile(
L"CompoundFile.cmp",
STGM_READWRITE|STGM_CREATE|STGM_SHARE_EXCLUSIVE,
0,
&pIStorage);
if(FAILED(hr))
goto Exit;
// Create a stream in the compound file.
hr = pIStorage->CreateStream(
L"StreamImage1",
STGM_READWRITE|STGM_SHARE_EXCLUSIVE,
0,
0,
&pIStream1);
if(FAILED(hr))
goto Exit;
// Create a second stream in the compound file.
hr = pIStorage->CreateStream(
L"StreamImage2",
STGM_READWRITE|STGM_SHARE_EXCLUSIVE,
0,
0,
&pIStream2);
if(FAILED(hr))
goto Exit;
// Get the class identifier for the JPEG encoder.
CLSID jpgClsid;
GetEncoderClsid(L"image/jpeg", &jpgClsid);
// Get the class identifier for the PNG encoder.
CLSID pngClsid;
GetEncoderClsid(L"image/png", &pngClsid);
// Save image1 as a stream in the compound file.
stat = image1.Save(pIStream1, &jpgClsid);
if(stat != Ok)
goto Exit;
// Save image2 as a stream in the compound file.
stat = image2.Save(pIStream2, &pngClsid);
Exit:
if(pIStream1)
pIStream1->Release();
if(pIStream2)
pIStream2->Release();
if(pIStorage)
pIStorage->Release();
if(stat != Ok || FAILED(hr))
return GenericError;
return Ok;
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP, Windows 2000 Professional [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | gdiplusheaders.h(Gdiplus.h 포함) |
라이브러리 | Gdiplus.lib |
DLL | Gdiplus.dll |