2014-10-10 46 views
0

您好,我嘗試僅使用按位運算符來查找BMP圖像的寬度和高度。 這是我到目前爲止嘗試過的。使用按位運算符查找bmp圖像的寬度和高度

for (i = 0; i <= 3; i++) 
    { 
     width = file_data[i + 18] | width << 8; 
     height = file_data[i + 22] | height << 8; 
    } 

這就是我所知道的。寬度在字節19,20,21和22中找到。字節19是低位字節,然後是20,然後是21,字節22是高位字節。

高度的高度在字節23,24,25和26中找到。字節23是低位字節,然後是24然後是25,而字節26是高位字節。

寬度和高度均爲整數。

更新-------- 目前正與文件IM的寬度和高度爲298由432 當我使用

for (i = 0; i <= 3; i++) 
    { 
     width = file_data[21 - i] | width << 8; 
     height = file_data[25 - i] | height << 8; 
    } 

當我運行該程序通過我得到298 - 80

+0

你爲什麼這樣做?將數據複製到BITMAPINFO結構中並直接訪問這些字段。 – 2014-10-10 00:55:42

+0

我想用按位運算符練習。 – john 2014-10-10 01:00:00

回答

0

雖然您的描述是正確的,但您的代碼已倒退。 file_data[18]是位圖寬度的最低有效字節,但您將其作爲width變量中最重要的字節。 height也是如此。要麼倒轉循環倒數,要麼將您的索引更改爲減去而不是添加。

+0

我試過width = file_data [21 - i] |寬度<< 8; height = file_data [25 - i] |身高<< 8;它不起作用 – john 2014-10-10 01:18:04

+0

@john:'width','height'和'binary_data'的類型是什麼?更好的是,在你的文章中,請提供一個完整的,可編譯的例子來證明問題。 – 2014-10-10 01:21:56

+0

對不起,我在想,並輸入它的file_data文件中的數據。寬度和高度均爲整數。 – john 2014-10-10 01:23:00