다음을 통해 공유


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, WriteStat 메서드가 포함되어야 합니다.

[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

추가 정보

EncoderParameter

EncoderParameters

GetImageEncoders

GetImageEncodersSize

이미지

Image::Save 메서드

이미지::SaveAdd 메서드

이미지 인코더 및 디코더 사용