2012-02-21 42 views
0

我有一個簡單的圖像,存儲寬度,高度,像素格式和其他一些我不確定的事情,然後是像素數據。使用RGBA32像素格式計算圖像像素陣列的尺寸

我已經被告知像素格式是RGBA32,而其餘的數據只是像素數據。

計算它的公式是什麼? 根據我的理解,每個RGBA顏色需要8位,因此每個像素需要4個字節。

那麼我會得出像素數組的大小是寬*高* 4,但這還不夠。

+0

你怎麼知道這是不夠的?你爲什麼不發佈你擁有的額外數據? – Gabe 2012-02-21 04:24:44

+0

誰給了你這張圖片?如果這是一種特定的圖像格式,我猜測可能有某種標題或校驗和或元數據或註釋。 – userx 2012-02-21 04:28:41

+0

我的寬度和高度爲64 * 64,總像素數據大小爲21760.當我讀取21760字節並顯示它時,它看起來很好。當我只讀64 * 64 * 4時,這是錯誤的。 – MxyL 2012-02-21 04:31:46

回答

1

64px乘64px BMP和RGBA32通常是16440字節(假設BITMAPV3INFOHEADER)。頭部56字節,像素數據16384字節(64 * 64 * 4)。 header size can vary though並且假定標準BMP爲124字節(BITMAPV5HEADER)。

我猜想,你有一個或多個以下的要佔你的額外〜5376(21760 - 16384)字節:

  • 完整性檢查(S)(校驗,CRC等)
  • 較長的頭部比您目前假設
  • 像素對準這不是4字節
  • 元數據(註釋,EXIF數據,GPS數據等)
  • ICC色彩配置文件
  • 數據間隙

在任何情況下,我會先檢查最後 16384(64×64×4)字節的數據中的哪一個有可能其中圖像數據是(如果這種格式在所有需要後BMP格式,並且沒有一些尾隨元數據或ICC配置文件或完整性檢查)。在旁註中,RGBA數據通常首先與alpha字節一起存儲(ARGB)。

爲了熟悉一個常見的圖像格式的結構,可能需要看看這個diagram of the BMP file format