[問題] BMP資料結構請教

作者: IOP14759 (iop14759)   2023-08-21 15:15:33
開發平台(Platform): (Ex: Win10, Linux, ...)
WIN7
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
C++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
Graphics.hpp
問題(Question):
該如何分析1像素1bit的bmp檔
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
TColor pixelColor = bmp->Canvas->Pixels[x][y]; //抓取像素點[寬][高]的RGB值
r = GetRValue(pixelColor);
g = GetGValue(pixelColor);
b = GetBValue(pixelColor);
補充說明(Supplement):
我用小畫家畫一張簡單的圖,畫布大小是50*60像素
上半部是R=255/G=0/B=0的純紅,下半部是B=255/G=0/R=0的純藍
這時候去讀BMP的結構,OK跟網路上說的一樣我都能看得懂,1CH-1DH=24(1像素24位元),
然後從36H開始分析像素矩陣的RGB都符合原圖
在C++Builber中使用#include <Graphics.hpp>中的GetRValue,GetGValue,GetBValueu也
都正確抓出R/B=255的值
然後使用線上繪圖(photopea)把亮度修改到10%,再去讀BMP的資料,我發現1CH-1DH=1(1
像素1位元),整個像素矩陣我都看不懂了,我上網查是說1bit的圖檔應該是只有黑跟白
https://upload.cc/i1/2023/08/21/ifxceV.png
但是我用GetRValue,GetGValue,GetBValueu指令去抓,反而能抓到紅色和藍色=0x19的值
,轉DEC是25剛好符合255的10%
既然用指令可以抓表示這結構一定是對的,那麼想請問在1像素佔1bit時的像素矩陣要怎
麼去分析
是否有相關關鍵字或書籍名稱可以分享給我,謝謝
作者: xam (聽說)   2023-08-21 16:12:00
學了兩年都還停在BMP檔嗎?
作者: stupid0319 (徵女友)   2023-08-21 16:34:00
1bit的黑白bmp,好像自由定義,有的程式1=黑,有的1=白就把110001110110..寫出來,然後8個bit變byte就可以了
作者: yvb   2023-08-21 17:37:00
根據 0AH-0BH 和 0EH-0FH, 可知 36H-3DH 有 color table.google: bmp color table => 有些reader忽略color table...直接假設0為黑1為白.
作者: longlongint (華哥爾)   2023-08-26 09:43:00
1樓的人生經歷了什麼創傷?
作者: xam (聽說)   2023-08-26 11:21:00
因為我看他前年就在問BMP檔案格式..
作者: lycantrope (阿寬)   2023-08-26 15:21:00
反正符合板規,就算跟兩年前一樣問bmp,也只能給過
作者: TeaEEE (愛不趴 不愛趴)   2023-08-27 14:18:00
0x36-0x3d是條色盤,0x3e開始才是資料
作者: MOONRAKER (㊣牛鶴鰻毛人)   2023-08-28 09:18:00
他就明顯卡住想不通 七樓還回答RTFM有什麼意義嗎是誰人生創傷阿顆
作者: eye5002003 (下一夜)   2023-08-28 21:35:00
沒人質疑那個線上軟體為什麼要亂改格式嗎??

Links booklink

Contact Us: admin [ a t ] ucptt.com