這是我第一篇文章。我有個問題。 我需要拍攝一個桌面的sceenshot,將其轉換爲jpeg,將其存儲在緩衝區中,然後對其進行處理並通過互聯網發送。從內存中獲取jpeg的大小(使用GDI ++轉換)
我已經用GetDC ....和GDI +編寫了用於將HBITMAP轉換爲jpeg的代碼。我現在遇到的問題是我不知道已經保存到IStream中的jpeg的大小。以下是將HBITMAP hBackBitmap引用的位圖轉換爲jpeg並將其保存到pStream中的代碼的一部分。我需要知道有多少字節被寫入pStream,我怎麼能使用pStream(獲得PVOID手柄):
Gdiplus::Bitmap bitmap(hBackBitmap, NULL);///loading the HBITMAP
CLSID clsid;
GetEncoderClsid(L"image/jpeg", &clsid);
HGLOBAL hGlobal = GlobalAlloc(GMEM_FIXED, nBlockSize) ;//allocating memory, the size of the current bitmap size. i'm over allocating but i don't think there is any way to get the exact ammount I need to allocate, is there?
if(!hGlobal)
return;
IStream* pStream = NULL ;
if(CreateStreamOnHGlobal(hGlobal, TRUE, &pStream) != S_OK)
return;
bitmap.Save(pStream, &clsid);
我需要的是:1。 找出JPEG的大小,多少字節已經寫入流中 2.如何使用流。例如,我可以爲流中的數據獲取PVOID嗎?
謝謝。
謝謝。 這是一個很好的解決方案,因爲我不需要爲流分配額外的內存。 – Nemok 2009-07-07 10:26:50