メモリからビットマップ(メモリに格納されている必要なヘッダーがすべて正しく作成されている)をロードし、HBITMAPをそのメモリに関連付けるにはどうすればよいですか?メモリからWindows GDIビットマップを作成する
答えて
あなたがそのようにように....それにあなたのビットをコピーして、新しいバッファを作成するCreateDIBSectionを使用する必要があります:[メモリ・バッファからWin32のC/C++のロードイメージ]の
std::ifstream is;
is.open("Image.bmp", std::ios::binary);
is.seekg (0, std::ios::end);
length = is.tellg();
is.seekg (0, std::ios::beg);
pBuffer = new char [length];
is.read (pBuffer,length);
is.close();
tagBITMAPFILEHEADER bfh = *(tagBITMAPFILEHEADER*)pBuffer;
tagBITMAPINFOHEADER bih = *(tagBITMAPINFOHEADER*)(pBuffer+sizeof(tagBITMAPFILEHEADER));
RGBQUAD rgb = *(RGBQUAD*)(pBuffer+sizeof(tagBITMAPFILEHEADER)+sizeof(tagBITMAPINFOHEADER));
BITMAPINFO bi;
bi.bmiColors[0] = rgb;
bi.bmiHeader = bih;
char* pPixels = (pBuffer+bfh.bfOffBits);
char* ppvBits;
hBitmap = CreateDIBSection(NULL, &bi, DIB_RGB_COLORS, (void**) &ppvBits, NULL, 0);
SetDIBits(NULL, hBitmap, 0, bih.biHeight, pPixels, &bi, DIB_RGB_COLORS);
GetObject(hBitmap, sizeof(BITMAP), &cBitmap);
bi.bmiColors [0] = rgbで正しくないものがあります。 BITMAPINFO構造体には、1ピクセルあたりのビット数に応じて、bmiColorsの0〜256エントリが必要な場合があります。 –
あなたは答えをコピーしたBrunoを少なくとも信用すべきです。 http://stackoverflow.com/questions/2886831/win32-cc-load-image-from-memory-buffer –
確かに、それを行う "公式の"方法はありますか?...または彼を信じて元のポストソーサーのものにリンクしていますか? – redec
- 1. Windows GDIコンテキスト - ビットマップを表示
- 2. マネージド(非GDI)ビットマップを作成できますか?
- 3. アクティビティからビットマップを作成
- 4. GDI PlusビットマップをQPixmapに変換する
- 5. GDI +ビットマップから直接BitBltを実行できますか?
- 6. ビットマップを作成するOutOfMemoryError
- 7. メモリからjpegのサイズを取得する(GDI ++で変換)
- 8. ファイルパスからビットマップ/描画ファイルを作成
- 9. OpenCV、ビットマップからイメージオブジェクトを作成
- 10. C++、GDI +、ビットマップをロードし、UpdateLayeredWindowを使用してビットマップを表示
- 11. カスタムGDIデバイスを作成するには?
- 12. Windows GDIコンテキスト - LoadImage
- 13. Windows GDI Context - CreateDIBSection
- 14. スレッド処理後のGDI +ビットマップの保存
- 15. ビットマップをプログラムで作成する方法
- 16. ファイルを作成するビットマップ6.0
- 17. wxPython、ビットマップを作成
- 18. ビットマップを保存すると汎用GDI +エラーにつながる
- 19. GestureOverlayViewからビットマップを生成
- 20. 指定した画面領域からビットマップを作成する
- 21. AndroidのRGBビデオフレームからビットマップを作成する
- 22. RGBカラーからビットマップを作成するには
- 23. AndroidでRelativeLayoutからビットマップを作成する
- 24. グレースケールバイトバッファイメージからビットマップを作成する方法は?
- 25. matlabで行列からビットマップを作成するには
- 26. capturePicture()をメモリから外してビットマップにする
- 27. ビットマップ変換:透明なビットマップから透明な部分を除外するビットマップの作成
- 28. java.lang.OutOfMemoryErrorビットマップを作成しますか?
- 29. GDI +グローバルに新しいSolidBrushを作成
- 30. ビットマップ.getBitmapResource() - メモリ質問
可能重複(http://stackoverflow.com/questions/2886831/win32-cc-load-image-from-memory-buffer) –