次の方法で共有


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 の実装には、SeekReadWriteStat の各メソッドを含める必要があります。

[in] clsidEncoder

型: const CLSID*

イメージの保存に使用するエンコーダーを指定する CLSID へのポインター。

[in] encoderParams

型: const EncoderParameters*

省略可能。 エンコーダーで使用されるパラメーターを保持する EncoderParameters オブジェクトへのポインター。 既定値は NULL です。

戻り値

種類: 状態

メソッドが成功した場合は、 Status 列挙体の要素である Ok を返します。

メソッドが失敗した場合は、 Status 列挙体の他の要素のいずれかを返します。

注釈

イメージの構築に使用されたものと同じストリームにイメージを保存しないでください。 これにより、ストリームが破損する可能性があります。

Image image(myStream); 
...
image.Save(myStream, ...); // Do not do this.

次の例では、2 つの Image オブジェクトを作成します。1 つは JPEG ファイルから構築され、もう 1 つは PNG ファイルから構築されます。 このコードでは、2 つのストリームを含む複合ファイルを作成し、それらのストリームに 2 つのイメージを保存します。

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 を含む)
Library Gdiplus.lib
[DLL] Gdiplus.dll

こちらもご覧ください

EncoderParameter

EncoderParameters

GetImageEncoders

GetImageEncodersSize

Image

Image::Save メソッド

Image::SaveAdd メソッド

イメージ エンコーダーとデコーダーの使用