请问用直接读二进制的方法,一行一行地读出每一个点的R,G,B的值,(图片是32的),最好是给点源代码?
分不够再加
分不够再加
解决方案 »
- 用VS2008,编辑框 有 Number属性,输入字符时自动有智能提示,如何实现(如图)
- _variant_t 类型能不 能转换成CTime型的啊?在线等!
- 谁知道www.csdn.net这个IP是多少?
- 如何用vc实现类似铁路订票、库存或证券交易的系统?
- 怎样为对话框建立内存区域,可以将多个位图一次先建立在内存区域,再贴到对话框设备环境上?
- VS2005 WINDOWS 服务体验
- AVI数据流信息头AVISTREAMINFO中的dwRate在已经创建视频数据流之后还能更改吗?
- 如何在服务器使用VC拦截ASP动态产生的网页,在发往客户端之前?
- 菜鸟问题,请高人指点。。。。。。。
- 如何在vc中动态改变数组的大小,并且保留数组中的内容
- 请教:CPropertySheet和CPropertyPage的问题
- CAsycnSocket的消息重置函数是怎样的原理?
跳到BMP文件的位数据区,读出来然后遍历像素,搞定.
只需注意扫描线是反转的就ok
using namespace std;ifstream in_file("test.bmp", ios::in|ios::binary);
in_file.seekg(0, ios::end);
int fsize = in_file.tellg();
in_file.seekg(0);
char * pBuf = new char[fsize+1];
in_file.read(pBuf, fsize);
in_file.close();LPBITMAPFILEHEADER lpfh = (LPBITMAPFILEHEADER)pBuf;
LPBITMAPINFOHEADER lpih = (LPBITMAPINFOHEADER)(pBuf+sizeof(*lpfh));
char * lpDib = lpfh->bfOffset;
//从lpDib开始就是RGB的值了,注意它的排列顺序是B,G,R,还要注意每行的填充。
另外宽和高可以这样得到:lpih->biWidth, lpih->biHeight, lpih->biBitCount
bfOffBits..
不需要填充.因为是32Bit
To: 以上两位,谢谢你们,但是我怎么取出图像数据中每一个像素的Blue色(要一排一排的取)