作者doom8199 (~口卡口卡 修~)
看板Grad-ProbAsk
標題Re: [理工] 請問數位圖片佔的大小
時間Mon Mar 25 14:05:27 2013
※ 引述《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