图像数组保存为BMP文件 你看一下2.bmp的内容和原先的内容有什么区别(把原先的内容直接调用保存函数保存成2.bmp) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 for(int j=0;j<width;j++) { B=lpBits[i*widthBytes+j*4]; G=lpBits[i*widthBytes+j*4+1]; R=lpBits[i*widthBytes+j*4+2]; lpGray[i*width+j]=(B+G+R)/3;//转化为灰度 } 针对32位的位图。有可能你的位图不是32位的。换32位的试试 是32位的位图,我取了他的位数的。m_hBitmap1 = (HBITMAP)::CreateBitmap(width,height,1,8,lpBits); //装载位图 这边应该是lpGray 如果用这个这么写是完全没有问题的m_hBitmap1 = (HBITMAP)::CreateBitmap(width,height,1,32,lpBits);出来的就是原来的BMP文件但是 m_hBitmap1 = (HBITMAP)::CreateBitmap(width,height,1,8,lpBits); 把灰度图保存成BMP就是黑色一片,我搞不懂是哪里出现问题了,求大神 问题可能出在这句:(HBITMAP)::CreateBitmap就是建立一个位图的函数,你看一下第4个在参数是什么含义 你把CreateBitmap这个函数改成CreateCompatibleBitmap试试,感觉问题还是出在CreateBitmap这个函数上 非常感谢兄弟,问题确实在这里,我用直接写32位是可以出来的。但是我把图片转成8位的,用这个方法写8位就出不来,我想这个函数可能是历依赖设备的。所以最后按照BMP图片的格式,自己去写二进制流。先已完成,非常感谢,我想如果用兼容设备API应该也能实现,不过还是自己掌握原理最好。结贴了 楼主 可否把你修改后的程序给我发一份 我也遇到了类似的问题 我对一副灰度bmp图进行处理后 想保存为新的bmp图 出来的结果也成了一种色的。多谢 如何生成XML的文件,在VS2005 c++的环境下。 用VC++实现插入图片文件到sql数据库里面 用过CSerialPort显示中文字符的请进! 请教VC下串口的问题,谢谢赐教! 如何在CString的对象中判断是否有数字或字符 关于《VC技术内幕》(潘爱民译)第15章的一个问题 服务器忙-------------------------------------why? ADO访问ORACLE数据库 各位朋友帮个忙。 关于CTreeCtrl的一个问题!求救!~ 多线程? 求网址
{
B=lpBits[i*widthBytes+j*4];
G=lpBits[i*widthBytes+j*4+1];
R=lpBits[i*widthBytes+j*4+2];
lpGray[i*width+j]=(B+G+R)/3;//转化为灰度
}
针对32位的位图。有可能你的位图不是32位的。换32位的试试
是32位的位图,我取了他的位数的。
m_hBitmap1 = (HBITMAP)::CreateBitmap(width,height,1,8,lpBits); //装载位图
这边应该是lpGray
如果用这个这么写是完全没有问题的m_hBitmap1 = (HBITMAP)::CreateBitmap(width,height,1,32,lpBits);出来的就是原来的BMP文件
但是 m_hBitmap1 = (HBITMAP)::CreateBitmap(width,height,1,8,lpBits); 把灰度图保存成BMP就是黑色一片,我搞不懂是哪里出现问题了,求大神
(HBITMAP)::CreateBitmap
就是建立一个位图的函数,你看一下第4个在参数是什么含义