2012-07-22 46 views
1

在開始對不起我的英語。我的目的是從位圖加載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++中打開位圖

+2

只是爲了數學的緣故,'804 * 600 * 3'不是'1441800'。 – 2012-07-22 21:21:15

回答

4

注意,每個行被填充到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