これが私の最初の投稿です。私は問題があります。デスクトップのシーンショットを撮り、それをjpegに変換し、バッファーに保存してから、操作してインターネット経由で送信する必要があります。
GetDC....とHBITMAPをjpegに変換するためのGDI+でこれを行うためのコードを作成しました。私が今抱えている問題は、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を取得できますか?
ありがとうございました。