作者YoursEver (beyond the time!)
看板C_and_CPP
标题Re: [问题] BMP资料结构请教
时间Thu Sep 14 09:12:01 2023
以下是我十几年前当助教时的作业说明投影片内容,
用copy的,不多做解释。
要用0/1表示0/255,要从biBitcount下手。
BMP Header:
(1) Bmp file header (totally
14 bytes)
1a) Byte 0~1:
bfType: always ‘B’,‘M’
1b) Byte 2~5:
bfSize: bmp image file size
38_04_04_00=>4*256*256+4*256+56=263244
1c) Byte 6~7 & Byte 8~9:
bfReserved1, bfReserved2:
reserved bytes, always 0
1d) Byte 10~13:
bfOffBits:
offset to the location of raw data, or
length of total header size
(file header + image header + palette)
36_04_00_00=>4*256+54=1078
(2) Bmp image header (totally
40 bytes)
2a) Byte 14~17 :
biSize: always 28 (hex),or 40 in decimal.
2b) Byte 18~21&22~25 :
biWidth &
biHeight (in pixels)
2c) Byte 26~27 :
biPlane
2d) Byte 28~29 :
biBitcount : color depth,
8 for 256-color;
18(hex, or 24 in decimal) for 24-bit color
2e) Byte 30~33 :
biCompression
2f) Byte 34~37 :
biSizeImage
2g) Byte 38~41&42~45:
biXPelPerMeter,
biYPelPerMeter
2h) Byte 46~49&51~53 :
biClrUsed,
biClrImportant
(3) Bmp palette:
optional,
usually used in gray-level images.
ex: [RR GG BB 00]*256 = 1024 Bytes
※ 引述《IOP14759 (iop14759)》之铭言:
: 开发平台(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时的像素矩阵要怎
: 麽去分析
: 是否有相关关键字或书籍名称可以分享给我,谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 125.228.64.192 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1694653923.A.F7B.html
※ 编辑: YoursEver (125.228.64.192 台湾), 09/14/2023 09:13:38