線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4535
推到 Plurk!
推到 Facebook!

單色bitmap 大小的計算方法

答題得分者是:geniustom
tidal
初階會員


發表:93
回覆:32
積分:25
註冊:2003-07-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-27 15:22:24 IP:202.82.xxx.xxx 未訂閱
我用的是單色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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-27 21:21:37 IP:219.68.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2018-09-15 20:55:45 IP:111.184.xxx.xxx 未訂閱
小弟實際試算某單色點圖陣圖) 之 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2018-09-18 22:26:23 IP:111.184.xxx.xxx 未訂閱
<參照回饋>

主題 : 單色點陣圖 bmp 轉 Epson 熱感式發票印表機使用的 bin 檔 (直接拆解單色點陣圖 bmp, 不用透過 API)
http://delphi.ktop.com.tw/board.php?cid=169&fid=936&tid=110141#21
系統時間:2024-11-13 5:51:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!