社区
图形处理/算法
帖子详情
16bit色bmp文件头到底54字节还是70字节
ma100
2010-02-04 10:50:16
看一些bmp的资料写的都是54个字节,但是我用ps 存一副 565的16bit bmp时,发现是70个字节,而且存出的图片用windodws自带的图片查看器还打不开,用画图板可以。
请谁帮我解释一下bmp的文件头格式呢
...全文
1080
5
打赏
收藏
16bit色bmp文件头到底54字节还是70字节
看一些bmp的资料写的都是54个字节,但是我用ps 存一副 565的16bit bmp时,发现是70个字节,而且存出的图片用windodws自带的图片查看器还打不开,用画图板可以。 请谁帮我解释一下bmp的文件头格式呢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
m_nNightmire
2010-02-04
打赏
举报
回复
m_nNightmire
2010-02-04
打赏
举报
回复
http://blog.csdn.net/LaPizza/archive/2008/11/06/3235318. = 原创,
BMP文件头格式 bmp文件二进制解析,bmp文件解析,bmp存储格式
下面的表格是我整理的BMP文件头的格式。
方便大家查询。
Bmp的文件头是 54 , 以下都是24 bit,
如果 图像大小是 720 * 480 ,那么文件大小是: 54 + 720 * 480 *3 很好理解,
如果 图像大小是 333 * 333那么文件大小就不是: 54 + 333 * 333 *3 了,奇怪么?,
总算引出高人了,我就公布答案吧:
如果 图像大小是 1*7 那么文件大小就是: 54 + 1*7*3 + 7*n 了,
如果 图像大小是 3*5 那么文件大小就是: 54 + 3*5*3 + 5*n 了,
如果 图像大小是 11*77 那么文件大小就是: 54 + 11*77*3 + 77*n 了,
总之是如果width * high * 3 + high * n != 4的倍数, 那么文件大小就是 54 + width * high * 3 + high*n 了。
n的取值范围是 0 ~~3 直到算下来,size是4的倍数。
顽固已死_有事烧纸
2010-02-04
打赏
举报
回复
讲地很详细啊 连我都差点看懂了
m_nNightmire
2010-02-04
打赏
举报
回复
首先请注意所有的数值在存储上都是按“高位放高位、低位放低位的原则”,如12345678h放在存储器中就是7856 3412)。下图是导出来的开机动画的第一张图加上文件头后的16进制数据,以此为例进行分析。T408中的图像有点怪,图像是在电脑上看是垂直翻转的。在分析中为了简化叙述,以一个字(两个字节为单位,如424D就是一个字)为序号单位进行,“h”表示是16进制数。
424D 4690 0000 0000 0000 4600 0000 2800 0000 8000 0000 9000 0000 0100*1000 0300 0000 0090 0000 A00F 0000 A00F 0000 0000 0000 0000 0000*00F8 0000 E007 0000 1F00 0000 0000 0000*02F1 84F1 04F1 84F1 84F1 06F2 84F1 06F2 04F2 86F2 06F2 86F2 86F2
......
BMP文件可分为四个部分:位图文件头、位图信息头、彩色板、图像数据阵列,在上图中已用*分隔。
一、图像文件头
1)1:图像文件头。424Dh=’BM’,表示是Windows支持的BMP格式。
2)2-3:整个文件大小。4690 0000,为00009046h=36934。
3)4-5:保留,必须设置为0。
4)6-7:从文件开始到位图数据之间的偏移量。4600 0000,为00000046h=70,上面的文件头就是35字=70字节。
5)8-9:位图图信息头长度。
6)10-11:位图宽度,以像素为单位。8000 0000,为00000080h=128。
7)12-13:位图高度,以像素为单位。9000 0000,为00000090h=144。
8)14:位图的位面数,该值总是1。0100,为0001h=1。
二、位图信息头
9)15:每个像素的位数。有1(单色),4(16色),8(256色),16(64K色,高彩色),24(16M色,真彩色),32(4096M色,增强型真彩色)。T408支持的是16位格式。1000为0010h=16。
10)16-17:压缩说明:有0(不压缩),1(RLE 8,8位RLE压缩),2(RLE 4,4位RLE压缩,3(Bitfields,位域存放)。RLE简单地说是采用像素数+像素值的方式进行压缩。T408采用的是位域存放方式,用两个字节表示一个像素,位域分配为r5b6g5。图中0300 0000为00000003h=3。
11)18-19:用字节数表示的位图数据的大小,该数必须是4的倍数,数值上等于位图宽度×位图高度×每个像素位数。0090 0000为00009000h=80×90×2h=36864。
12)20-21:用象素/米表示的水平分辨率。A00F 0000为0000 0FA0h=4000。
13)22-23:用象素/米表示的垂直分辨率。A00F 0000为0000 0FA0h=4000。
14)24-25:位图使用的颜色索引数。设为0的话,则说明使用所有调色板项。
15)26-27:对图象显示有重要影响的颜色索引的数目。如果是0,表示都重要。
三、彩色板
16)28-35:彩色板规范。对于调色板中的每个表项,用下述方法来描述RGB的值:
1字节用于蓝色分量
1字节用于绿色分量
1字节用于红色分量
1字节用于填充符(设置为0)
对于24-位真彩色图像就不使用彩色表,因为位图中的RGB值就代表了每个象素的颜色。但是16位r5g6b5位域彩色图像需要彩色表,看前面的图,与上面的解释不太对得上,应以下面的解释为准。
图中彩色板为00F8 0000 E007 0000 1F00 0000 0000 0000,其中:
00FB 0000为FB00h=1111100000000000(二进制),是红色分量的掩码。
E007 0000为 07E0h=0000011111100000(二进制),是绿色分量的掩码。
1F00 0000为001Fh=0000000000011111(二进制),是红色分量的掩码。
0000 0000总设置为0。
将掩码跟像素值进行“与”运算再进行移位操作就可以得到各色分量值。看看掩码,就可以明白事实上在每个像素值的两个字节16位中,按从高到低取5、6、5位分别就是r、g、b分量值。取出分量值后把r、g、b值分别乘以8、4、8就可以补齐第个分量为一个字节,再把这三个字节按rgb组合,放入存储器(同样要反序),就可以转换为24位标准BMP格式了。
四、图像数据阵列
17)17-...:每两个字节表示一个像素。阵列中的第一个字节表示位图左下角的象素,而最后一个字节表示位图右上角的象素。
按照前述r5g6b5彩色板规范,我们对图像最左下角手机上图像的的像素在24位模式中的rgb值进行推算(由于垂直翻转,这个像素在手机上看来实际上在左上角):
02F1 为 F102h
r=(F102 AND FB00)/ 800 × 8 h= F0h=240
g=(F102 AND 07E0)/ 20 × 4 h=20h=32
b=(F102 AND 001F)× 8 h= 10h=16
rgb=F02010h,放在存储器中为1020F0h。
在Photoshop中设一下颜色,rgb取240、32、16可以看到是近红色。
将手机中图像数据复制出来,加上前图中的文件头数据,只需要把6)、7)项位图宽、高设好就可以用ACDSEE进行查看了。但是如果要用其他的程序进行处理,其他项目一般也需要正确设置。
按照这样的原则,可以写一个简单的程序把一幅24位BMP图像转换为手机支持的16位r5g6b5图像,然后写进AXF,刷机后就可以在手机上看到自己做的6万色真彩图了。
目前52和兰色可能都在开发这样的程序,有兴趣的朋友不妨先自己动手做几张图片。
ma100
2010-02-04
打赏
举报
回复
这也说是54,可用ps做出来确实是70 啊
嵌入式电子相册设计实现了
bmp
格式图像的显示。主要包括
16
bit
565图像的解码和显示。前翻、后翻触摸屏事件的实现。
实现了
bmp
格式图像的显示。主要包括
16
bit
565图像的解码和显示。前翻、后翻触摸屏事件的实现。 需求设计 (1) 在ARM9平台上,实现液晶屏显示
16
位(R5 G6 B5)
BMP
彩
色
图像; (2) 实现触摸屏的功能,利用触摸屏可以实现
BMP
图像“上一张”和“下一张”的轮换显示; (3)
BMP
文件
的解码函数的实现; (4) 触摸屏功能的实现; 详细设计:
BMP
文件
的构成 (1)
BMP
文件
可以看成4大块的内容: (2) 位图
文件
头
(
bit
map-file header); (3) 位图信息
头
(
bit
mapinformation-header); (4)
色
彩表(color table); (5) 位图的
字节
阵列(即位图数据流); (6) 如图1所示。
16
色
、
16
位
色
、24位
色
位图
文件
那些事
最近,因为项目需要使用
16
色
图片,顺带了解了一下位图格式和相关知识,现在在此做个笔记记录一下。 一、
BMP
文件
格式 1、
BMP
文件
格式
BMP
文件
由
文件
头
、位图信息
头
、颜
色
信息和图形数据四部分组成。 2、
BMP
文件
头
(14
字节
)
BMP
文件
头
数据结构含有
BMP
文件
的类型、
文件
大小和位图起始位置等信息。 其结构定义如下: typedefstructtag
BIT
MAPFILEHEADER { WORDbfType;//位图
文件
的类型,必须为BM(1-2
字节
) ...
BMP
图片
文件
原始数据分析
按照像素深度分类可以分为:1
bit
位图(2
色
)、4
bit
位图(
16
色
)、8
bit
位图(256
色
)、
16
bit
位图(65536
色
-高彩
色
)、24
bit
位图(
16
70
万
色
-真彩
色
)、32
bit
位图(
16
70
万
色
-增强型真彩
色
)。用windows自带画图工具,画一张50(宽)x
16
(高)的
BMP
图片,填充红绿蓝灰4个颜
色
,每个颜
色
4个像素高度,保存成24位位图格式。采用三基
色
(红R,绿G,蓝B)构成像素的
色
彩值,通常每个基
色
占一个
字节
(十进制 0-255表示,十六进制0x00-0xFF表示)。
bmp
文件
头
信息
偏移量 域的名称 大小 内容 图象
文件
头
0000h
文件
标识 2 bytes 两
字节
的内容用来识别位图的类型: ‘BM’ : Windows 3.1x, 95, NT, … ...
bmp
位图格式详细介绍-1/4/8/
16
/24/32
bit
、存储格式等
详细介绍
bmp
位图
文件
的四个部分:位图
文件
头
、位图信息
头
、调
色
板、位图数据,并且结合位图
文件
数据举例说明了什么是位图
文件
,
bmp
位图看这篇文章就差不多了
图形处理/算法
19,469
社区成员
50,697
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章