これは私の最初の投稿です。私は問題があります。 私は、デスクトップのsceenshotを取る必要がありますjpegに変換し、バッファに格納し、それを操作し、インターネット上で送信します。メモリからjpegのサイズを取得する(GDI ++で変換)
これを行うためのコードは、HBITMAPをjpegに変換するためのGetDC ....とGDI +で書かれています。私が今問題を抱えているのは、IStreamに保存されているJPEGのサイズがわからないということです。以下は、HBITMAP hBackBitmapで参照されるビットマップをjpegに変換してpStreamに保存するコードの一部です。私は必要なもの
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);
は次のとおりです:私は(PVOIDハンドルを取得)pStreamに書き込まれ、どのように私はpStreamを使用することができますされているどのように多くのバイトを知っておく必要があり 1 JPEGのサイズを調べ、どのように多くのバイトストリームに書かれている。 2.ストリームの使い方。たとえば、ストリーム内のデータのPVOIDを取得できますか?
ありがとうございます。
ありがとうございます。 ストリームに余分なメモリを割り当てる必要がないので、これは良い解決策です。 – Nemok