原文链接:http://www.blogbus.com/shijuanfeng-logs/100675168.html
-
24位bmp存储是按BGR BGR。。。 存的
bmp位图在存储时,图片数据部分的字节数一定是4的倍数,如果不够四的倍数,在每一行要补齐字节。
具体说是这样,假设现在有一张图,宽6个像素,高随便,24位格式保存(每个像素点占三个字节,分别代表RGB三颜色)那么它每行有效数据部分应该是6×3=18字节,18不是4的倍数,所以要补齐,补到20字节。最终存储格式如下图:前18位为有效像素数据,最后两位XX为填补数据,无意义BGR BGR BGR BGR BGR BGR XXBGR BGR BGR BGR BGR BGR XXBGR BGR BGR BGR BGR BGR XX……在图像显示时,填充的数据是不会显示出来的。但是我们在对图像进行处理时,要注意跳过这些无效的填充数据。昨天纠结了很久的问题是如何把图像 颠倒过来存储:最后的公式是:for (int i =0; i cBmpVufferVer[VIEWFINDER_HEIGHT*3*i+j] = cBmpVuffer[VIEWFINDER_WIDTH*j+3*i]; cBmpVufferVer[VIEWFINDER_HEIGHT*3*i+j+1] = cBmpVuffer[VIEWFINDER_WIDTH*j+3*i+1]; cBmpVufferVer[VIEWFINDER_HEIGHT*3*i+j+2] = cBmpVuffer[VIEWFINDER_WIDTH*j+3*i+2]; } }