在C++中打开位图
问题描述:
在开始对不起我的英语。我的目的是从位图加载RGB数组。但是图像的大小和高度*宽度*的乘积是有区别的。3.当我读到关于bmp格式的信息时,我注意到当widht%4是!= 0时,我必须增加一些数字以达到均衡。 (宽度%4 == 1我必须加3,宽度%4 == 2我必须加2等) 图像的大小是1 442 454字节,高度是601,宽度是801. 804 * 600 * 3 == 1 441 800,它大于图像的大小。 801 * 600 * 3 == 1441800它必须小于图像的大小(即使我添加了54位标头)。我必须做什么才能正确读取它? (头被正确地加载)在C++中打开位图
答
注意,每个行被填充到4个字节(未像素)的倍数。
因此,如果每行有801个像素,每个像素是3个字节(RGB),那么每行有801 * 3 = 2403个字节,并且这些字节会填充2404个字节。位图大小因此将是601 * 2404 = 1444804字节。
如果你的行宽只有800像素,那么你的每行有800 * 3 = 2440字节,这已经是4字节的倍数,所以不会有额外的填充字节,位图大小将是601 * 2400 = 1442400字节。使用54字节的标题,这会产生1442454字节。
结论:你的图片的大小确实是801 * 600,而不是801 X 601
只是为了数学的缘故,'804 * 600 * 3'不是'1441800'。 – 2012-07-22 21:21:15