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。
傳回值
類型: 狀態
如果方法成功,它會傳回Ok,這是 Status 列舉的元素。
如果方法失敗,它會傳回 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 |