请教bmp转换为xbm的方法 ( 积分: 50 )

  • 主题发起人 主题发起人 anick
  • 开始时间 开始时间
A

anick

Unregistered / Unconfirmed
GUEST, unregistred user!
因为以前没接触过xbm格式,所以不太清楚,找了一些资料也不知道该怎样写xbm图像

请教一下各位DX,最好用delphi给我描述一下
 
难道没有人摸过xbm图像格式吗?
 
x-xbitmap格式的图片(以下简称为Xbm格式)特殊,就在于它并不跟gif,jpg等图片格式一样,是一个真正的纯2进制图片格式,而是ascii码文件--换句话说,它是一个纯文本文件,在Windows系统下,系统浏览器将它翻译成图片来进行显示。
下面让我们先来制作一个Xbm图形格式图片:
新建一个文本文件,将以下内容复制进去:
#define counter_width 48
#define counter_height 9
static unsigned charcounter_bits[]={ff,3c,7c,3c,70,3c,fe,7c,fe,7c,78,7c,ee,ee,ee,ee,7c,ee,e0,ee,60,ee,74,ee,70,fe,30,
fe,70,fe,38,ec,e0,ec,70,ec,1c,e0,ee,e0,70,e0,fe,7e,fe,7e,70,7e,fe,3c,7c,3c,70,3c}
然后,将此文本文件保存为名字为 test.Xbm的文件。
接下来,让我们看看如果在ie中打开它,会出现什么情形??(新开一个ie,然后将test.Xbm直接拖拽到它上面),哈,出现了如下图一样的情景,在浏览器中出来的,已经不是我们的文本,而是一个黑白的图片了!
让我们看看上面那代码中,每一行的意义:
#define counter_width 48 这里定义了图片的宽度,一般都设置为8的整数倍,因为我们想显示的是6个数字,所以就设置成了8*6=48的宽度
#define counter_height 9 这里设置了图片的高度,可以任意设置,但是注意,这里的数字直接决定了下面的数组中,是用几组数来表示一个显示出的数字
static unsigned char counter_bits[]={7c,3c,7c,3c,70,3c,fe,7c,fe,7c,78,7c,ee,ee,ee,ee,7c,ee,e0,ee,60,ee,74,ee,70,fe,30,
fe,70,fe,38,ec,e0,ec,70,ec,1c,e0,ee,e0,70,e0,fe,7e,fe,7e,70,7e,fe,3c,7c,3c,70,3c}
在这里,是图片用来显示内容的十六进制的代码,在这里,是9*6=54个数字来表示,值得一提的是,由于在图片显示中,是显示完了一行后,再显示第2行,直到最后一行,因此更为准确的描述是6*9显示,每6个数表示一行(因为我们显示了6个数字),一共9行(我们的定义中,是采用的高度为9的数组)
正如static unsigned char英文意思为静态的,无符号的,烧焦的。它只能用来显示黑白两种颜色。二进制中的1将来用显示为黑色,0为白色。
因此,上面的7c、3c这样的数字,就是一个256位的2进制,其中的1表示黑色,0表示白色,由此绘制出每个数字的图形。
由于Xbm文件的性质决定,它只能显示黑/白两种颜色,而且以数组的方式来表现每个要显示的图形,注定了不能用它生成太复杂的图案。那么,这样的图片格式到底有什么用呢??当然有的,不少asp论坛/聊天室的登陆验证码,就是用这样的方法在asp中动态生成的。
 
问题前几天已经解决了,不过还是感谢你的回答
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部