VC++バッファデータをビットマップに書き込む方法

1224 ワード

最近C++で画像の処理をしていると、バッファデータを図面に書くことができ、デバッグに大きく役立ち、問題がどこにあるかをはっきり見ることができます.
この実装コードを貼り付けて、皆さんの役に立つことを望んでいます.
                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:みんなが多く伝言を残して心得を交流することを望んで、共に勉強して、共に進歩します!ありがとう!