2
我試圖從我的IStream實例中複製一些二進制數據(因爲Gdiplus ::圖像只保存到IStream派生對象,或文件路徑)到一個字符指針,我可以通過簡單地知道分配的二進制大小並有權訪問指針。如何將IStream實例中的數據讀入char指針?
我班如下:
Upload::Upload(Gdiplus::Bitmap* bitmap, CLSID clsEncoderId)
{
int result;
STATSTG statResult;
result = CreateStreamOnHGlobal(0, TRUE, &m_hBufferStream);
if (result != S_OK)
MessageBoxW(NULL, _T("Upload::Upload(): Could not create stream"), _T("Point"), MB_OK | MB_ICONERROR);
else
{
if (bitmap->Save(m_hBufferStream, &clsEncoderId, NULL) != Gdiplus::Ok)
MessageBoxW(NULL, _T("Upload::Upload(): Could not save() image"), _T("Point"), MB_OK | MB_ICONERROR);
}
if (m_hBufferStream->Stat(&statResult, STATFLAG_NONAME) != S_OK)
return;
Gdiplus::Image test(m_hBufferStream, TRUE);
test.Save(_T("hejs.png"), &clsEncoderId, NULL);
m_iSize = statResult.cbSize.LowPart;
}
char* Upload::GetBinaryData()
{
char* buffer = (char*)malloc(m_iSize);
ULONG size = 0;
m_hBufferStream->Read(buffer, m_iSize, &size);
return buffer;
}
在我的函數處理上傳實例我這樣做:
char* pBuffer = upload->GetBinaryData();
buffer.write(pBuffer, upload->GetSize());
但存儲在存儲器是錯誤的(奇怪的是這似乎是一個模式,雖然)。
我在做什麼錯?
在此先感謝。
P.S .: 測試Image-instance在從m_hBufferStream中讀取後成功保存到文件中。