首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

帮小弟我看看这段转灰度的代码

2012-01-23 
大虾帮我看看这段转灰度的代码其中Totalsizebminfo.bmWidth*bminfo.bmHeight*3//我处理的是真彩色bmpinf

大虾帮我看看这段转灰度的代码
其中Totalsize=bminfo.bmWidth*bminfo.bmHeight*3;     //我处理的是真彩色
bmpinfo的声明为BYTE   *bmpinfo;    
用setbitmapbits和getbitmapbits是不是有问题?


void   CTest5Doc::OnProcessRgbtogray()  
{    
Bitmap.GetBitmapBits(Totalsize,bmpinfo);
int   i,j,R,G,B;  
        for(j=0;j <bminfo.bmHeight;j++)      
for(i=0;i <bminfo.bmWidth;i++){

R=bmpinfo[j*bminfo.bmWidth*3+i*3+2];
G=bmpinfo[j*bminfo.bmWidth*3+i*3+1];
B=bmpinfo[j*bminfo.bmWidth*3+i*3];

bmpinfo[j*bminfo.bmWidth*3+i*3+2]=(299*R+587*G+114*B)/1000;
                        bmpinfo[j*bminfo.bmWidth*3+i*3+1]=(299*R+587*G+114*B)/1000;
bmpinfo[j*bminfo.bmWidth*3+i*3]=(299*R+587*G+114*B)/1000;


}
    Bitmap.SetBitmapBits(Totalsize,bmpinfo);
       

UpdateAllViews(NULL);
//   TODO:   Add   your   command   handler   code   here

}
运行转换后一幅图片的下半部分变黑了,而且上面有显示的部分也没有变为黑白。
如果需要全部代码,请加我qq:101084014或者告诉我你的邮箱,谢谢帮忙!


[解决办法]
图像转成灰度后像素所占字节时候变为原来的1/3 ?Totalsize=bminfo.bmWidth*bminfo.bmHeight;
[解决办法]
为什么乘4呢?就是×3呀。
难道你用的原图是32位的?
[解决办法]
哦,接分

你原来是用32位的啊,怪不得了
24位就要*3

热点排行