看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《lwhs (lwhs)》之銘言: : 今有 800x600 像素的灰階數位圖片 每個象素均以一個byte表示之 : 試問 以bitmap(bmp)格式存之 此圖片將佔去多少記憶體空間? : sol: : 每一pixel佔 3bytes 共佔3x800x600=1440000bytes記憶體空間 : 小弟想請問 bmp每一pixel佔 3bytes 這是對的嗎? : 那不就表示bmp也是全彩共24bits? 還是bmp是灰階? : 雖然我剛測試儲存bmp檔後也是全彩 所以表示他是佔24bits? : 因為大部分的書都沒提到bmp佔多少位元 : 謝謝了 --- 我用回文 bmp 圖檔主要分三部分: <1> header <2> palette <3> raw data <1> header 共佔 54 bytes 用來定義整張 image 的 spec <2> 若只要儲存 256色 (以下) 的影像 每個 pixel 都用 24 bits 來儲存, 儲存量過於浪費 所以才有 palette 這個東西 簡單說,它是用來定義一組 color map: <index> => <color> 00 => R1 G1 B1 A1 01 => R2 G2 B2 A2 ... 一旦定義好這個 map, 後面的 raw data 就不需要花 3bytes 來記錄 pixel 而只需要 1 byte (index) 來儲存 因此,一張 256色的 800x600 bmp 圖檔大小 = 54 + 256*4 + 800*600 (bytes) Note: <1> 若是存成 2/4/8/16 色的圖檔, 儲存量會更小 因為 index 所需的 bits 數表示不需要那麼多 (1 byte) <2> 若 image width 非 4 的倍數, 需做 zero pending 只是以原po例子而言, 800 為 4 的倍數 因此不須理會此 case -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 175.98.124.34
lwhs:....好專業@@ 謝謝你^^ 這樣看來bmp他不是佔24bits了 03/25 22:11
doom8199:要看是哪種儲存格式。 若是24位元的bmp圖檔,每個 pixel 03/26 00:21
doom8199:就真的是用 24bits 來記憶 03/26 00:21
doom8199:其實你可以用小畫家的另存新檔來驗證答案 XD 03/26 00:22
wsx02:doom大會的東西還真多 真強 03/26 11:02
lwhs:太專業了 謝謝你 我剛試一下WIN7的BMP檔還有分好幾種位元選擇 03/27 23:07