社区
多媒体
帖子详情
位图变换问题,请大虾帮忙!急
winnerfast_gg
2004-10-25 03:33:41
如何用vb实现16的位图(bmp)变成32位,而且dpi不变呢。
请各位大虾指点,最好给点源代。
...全文
144
13
打赏
收藏
位图变换问题,请大虾帮忙!急
如何用vb实现16的位图(bmp)变成32位,而且dpi不变呢。 请各位大虾指点,最好给点源代。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
winnerfast_gg
2004-10-31
打赏
举报
回复
还没能出来呢,高手再帮忙啊。
拜托!
winnerfast_gg
2004-10-29
打赏
举报
回复
请问:怎么打开bmp文件
看到类似于
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
这样的数据。
指教一下。
还有,能用vb实现么?
ThinkLover
2004-10-29
打赏
举报
回复
首先请注意所有的数值在存储上都是按“高位放高位、低位放低位的原则”,如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格式了。
winnerfast_gg
2004-10-28
打赏
举报
回复
看过关于头信息方面的东西,不过了解不多
能给点代码么?楼上的
thirdapple
2004-10-28
打赏
举报
回复
从算法角度,16变32就是一个添加三个二进制0的问题
roveman
2004-10-28
打赏
举报
回复
估计这个变法难,如果从32变16可能简单点,我也不会,关注……
winnerfast_gg
2004-10-28
打赏
举报
回复
还有人管么,大家帮帮忙。
thirdapple
2004-10-27
打赏
举报
回复
建立一个32位的DIB拷贝上去不符合要求?
winnerfast_gg
2004-10-27
打赏
举报
回复
可以吧,不知道具体怎么做,指点一下。
最好有点源代码。
xinliangyu
2004-10-26
打赏
举报
回复
16位与32位位图的区别何在,然后才谈得上如何实现其转变。
二者之间有何本质区别?
winnerfast_gg
2004-10-26
打赏
举报
回复
怎么没人看啊。大家多帮忙啊。
我自己先顶!
winnerfast_gg
2004-10-26
打赏
举报
回复
哪位有源代,弄点看看。
jam021
2004-10-26
打赏
举报
回复
关注,帮你顶!
我在CSDN参与的3000个帖子
2:100分
急
求,随机输出十个小写字母,但是,要求这十个字母不相同 3:求Sn=a+aa+aaa+…+aaa…a(n个a)之值 4:数组题 望高手
帮忙
! 5:呵呵,来推荐一下我的网站,本站提供大量当今流行的免费的音乐和免费电影,...
基础
各位兄弟,在SDK编程中如果实现...求助:通过编程DirectX抓屏------>masterz:再麻烦你一下,谢谢熟悉RichEdit的朋友过来看一下,RichEdit的几个
问题
.如何对 I/O 端口进行操作?有了该
问题
就有了思考(100分 献礼!)如何
ARM经典300问
第1 章 体系结构 第1 问: Q:
请
问在初始化CPU 堆栈...Q:
请
教:MOV 中的8
位图
立即数,是怎么一回事 0xF0000001 是怎么来的 A:是循环右移,就是一个0—255 之间的数左移或右移偶数位的来的,也就是这个数除以
经典ARM300问
第1 章 体系结构 ...Q:
请
教:MOV 中的8
位图
立即数,是怎么一回事 0xF0000001 是怎么来的 A:是循环右移,就是一个0—255 之间的数左移或右移偶数位的来的,也就是这个数除以4 一直除, 直到在0-255 的范围内它是
CSDN回帖得分大全(近两年)
IE内嵌控件窗口焦点切换
问题
,
急
[VC/MFC ATL/ActiveX/COM] √ 什么原因造成的啊?好郁闷! [VC/MFC 基础类] √ 如何在console程序中调用activex控件 [VC/MFC ATL/ActiveX/COM] ...
多媒体
809
社区成员
8,275
社区内容
发帖
与我相关
我的任务
多媒体
VB 多媒体
复制链接
扫一扫
分享
社区描述
VB 多媒体
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章