VC++バッファデータをビットマップに書き込む方法
1224 ワード
最近C++で画像の処理をしていると、バッファデータを図面に書くことができ、デバッグに大きく役立ち、問題がどこにあるかをはっきり見ることができます.
この実装コードを貼り付けて、皆さんの役に立つことを望んでいます.
PS:みんなが多く伝言を残して心得を交流することを望んで、共に勉強して、共に進歩します!ありがとう!
この実装コードを貼り付けて、皆さんの役に立つことを望んでいます.
BITMAPFILEHEADER bfh;
BITMAPINFOHEADER bi;
bfh.bfType=0x4d42;
bfh.bfOffBits=54;
bfh.bfSize=320*240*3+54;
bfh.bfReserved1=0;
bfh.bfReserved2=0;
bi.biWidth=320;
bi.biSize=40;
bi.biHeight=240;
bi.biPlanes=1;
bi.biBitCount=24;
bi.biCompression=0;
bi.biSizeImage=0;
bi.biXPelsPerMeter=0;
bi.biYPelsPerMeter=0;
bi.biClrImportant=0;
bi.biClrUsed=0;
BYTE *pbuffer=new BYTE[bfh.bfSize];
memcpy(pbuffer,&bfh,14);
memcpy(pbuffer+14,&bi,40);
memcpy(pbuffer+54,cpyDest,320*240*3);
WCHAR* filepath = new WCHAR[MAX_PATH];
wcscpy(filepath, g_TempPath);
HANDLE bmpFile = CreateFile(
filepath, GENERIC_WRITE, FILE_SHARE_READ, NULL,
CREATE_ALWAYS, NULL, NULL );
DWORD dwWritten = 0;
if (bmpFile != NULL)
{
WriteFile( bmpFile, pbuffer, 320*240*3+54, &dwWritten, NULL ); //
}
CloseHandle( bmpFile );
delete []filepath;
delete []pbuffer;
少し説明します.上には2つのヘッダ情報-ビットマップヘッダとファイルヘッダ情報があります.ここで、ビットマップヘッダ情報のサイズは40バイトであり、ファイルヘッダ情報のサイズは14バイトである.PS:みんなが多く伝言を残して心得を交流することを望んで、共に勉強して、共に進歩します!ありがとう!