[问题] 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