1.关于四字节对齐的问题
出现现象:如果不是4的倍数,图像呈黑白色倾斜,然后有斜纹出现。
解决方法:对其做处理,不是4的倍数的时候,添0补齐。
结果:彩色图片出来了,但是一条斜黑线仍然存在。
接着的解决方法:分配宽为4的倍数的内存wid_size1=(wid_size*BmpBit/8+3)/4*4;
pBmpBuffer=(unsigned char*)malloc(sizeof(unsigned char)*(wid_size1*height));
分配内存时自动给buffer初始化赋0,接着开始写buffer就行,但每行要跳过4的倍数的字节.
例如:for(j=0;j<wid_size;j++)
{
*(pBmpBuffer+i*wid_size1+j*3)=(unsigned char)(filter(*(filtern+chose[j]),(new_buffer_b+r_integal[j]),tap));
*(pBmpBuffer+i*wid_size1+j*3+1)=(unsigned char)(filter(*(filtern+chose[j]),(new_buffer_g+r_integal[j]),tap));
*(pBmpBuffer+i*wid_size1+j*3+2)=(unsigned char)(filter(*(filtern+chose[j]),(new_buffer_r+r_integal[j]),tap));
}
结果:perfect呵呵
2.关于调试过程中出现的乱码问题原因:传递的参数不对char型被转化为int型,造成取数据的时候出现错误。
3.出现现象:图像颜色过渡比较大的时候出现和图像色调不匹配的颜色块
出现原因:数据经过filter以后因为返回值是int类型,对其进行强制转换unsigned char,没有考虑到滤波结果是负数或者大于255的现象。图像色彩取值为0~255
解决方法:对齐进行判定,如果返回值小于0就使其为0;大于255,让其取255.
结果:成功。