單色bitmap 大小的計算方法 |
答題得分者是:geniustom
|
tidal
初階會員 發表:93 回覆:32 積分:25 註冊:2003-07-15 發送簡訊給我 |
我用的是單色bitmap. 例如圖的大小是560*560 .
大小應該是(560*560)/8 62 = 39262 bytes. 62bytes是bitmap的header
但我用photoshop 儲存這幅圖. 大小是40382 bytes. 這次我的圖象是480* 480 .大小應該是 (480 * 480) /8 62 = 28862 bytes.
我用photoshope 儲存這幅圖. 大小的確是28862 bytes 為什麼用同一個計算方法. 但pixel不同.出來大小會不一樣?
|
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
tidal您好..
這不是PHOTO SHOP的關係....
而是單色的BMP檔有一個規則..每一個BLOCK都是由32*1所構成..以列為單位
所以每一列的像素都要是32BITS(4BYTES)的倍數
例如..一張32*10的圖..需要(32*10)/8+62=102BYTES
而30*10..不滿32BITS(4BYTES)..就會用兩個0來補上..
只是在檔頭已經定義好了圖像的大小..所以那兩個BIT並不會顯示出來.. 同理..560*560的圖..會以576*560去計算
(576是32的倍數..也是>=560的最小倍數)
所以..總大小才會是(576*560)/8+62=40382.. 不知這樣說您明白了嗎 發表人 -
|
lazarus
一般會員 發表:14 回覆:38 積分:20 註冊:2018-05-12 發送簡訊給我 |
小弟實際試算某單色點圖陣圖) 之 bmp 寬高為 346 x 80, 照以上方式 346 湊滿 4 的倍數應為 348 來算
需要(348*80)/8 62=3542 BYTES (但電腦滑鼠右鍵看檔案內容為 3582) 實際比對 bmp 所 dump 的資料發現上面說法好像有誤, bmp 寬高為 346 x 80 寬 346 應該要用 8 的倍數來看, 這樣就要湊到 352, 所以需要 (352*80)/8 62=3582 BYTES (同電腦滑鼠右鍵看為 3582) 每列(row)資料用 352/8=44 個 bytes 來存, 經實際 dump bmp 資料為 HEX 來看也是如此, 扣掉擋頭 62 bytes 後 共有完整的 80 個 ROW (高), 每個 ROW 有 44 bytes 個資料 |
lazarus
一般會員 發表:14 回覆:38 積分:20 註冊:2018-05-12 發送簡訊給我 |
<參照回饋>
主題 : 單色點陣圖 bmp 轉 Epson 熱感式發票印表機使用的 bin 檔 (直接拆解單色點陣圖 bmp, 不用透過 API) http://delphi.ktop.com.tw/board.php?cid=169&fid=936&tid=110141#21 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |