我测试了一下,还是发现了问题,不过应该很容易修改了。5 m* W/ y" Z n+ B% a& D
2 o# g/ B7 L* q) {2 ]' W: K问题在于你对32bit tga图片字库还没有真正理解。9 P( f: k3 H* i$ a
首先,我附上一个游戏里的32bit tga图片字库文件,你用2进制编辑器打开看一下就知道了。
2 f3 E/ J' r/ ?, m( A B每个象素的前3个字节都是FF FF FF ,最后一个字节表示透明度,才有变化,是00-FF。
$ c& P. i8 q, h e4 U
4 F# e+ @$ k$ F( {# ^& q. E32bit tga图片字库其实只是反映了一个白色的字体的各个部分的透明程度,它本身不反映颜色信息。# O* Q% ]5 k1 r5 [# i( V
那颜色从哪里来的呢?$ s+ C( C" o- c1 s" Y! ]! i
颜色值其实是从游戏的配置文件里读取的,游戏把读取的颜色,比如说是黄色去替换32bit tga图片字库文件每个象素的前3个字节 FFFFFF ,然后配合最后一个字节,就在内存里生成了一张新的黄色字体的图片tga.用这张黄色字体的图片tga作为字体显示到屏幕上就得到了黄色的字体。同理,游戏的配置文件里设定的是红色的话,我们就能得到红色的字体。
9 { o. q& n& j( b6 R* V) S) O- Y2 ]4 _! h
32bit tga图片字库有点像photoshop里的遮罩的作用。
! Z" J. }5 N$ H# A" X: e7 y7 U+ z- V! a" I
好,明白了这些。我们回过头来看看2维码和条形码。
k6 l: z% Z% h- q L1 }* P其实非常简单了。
% ~- d, [& f7 Q. Q象素只分2种,有色象素和透明象素。
9 _5 }" T$ Q4 S, |3 x0 q% t; x" O$ t
有色象素就是 FF FF FF FF8 `3 m. d# d6 j+ o
透明象素就是 FF FF FF 00
$ T6 Z! L: P: |3 g8 D% H
. f1 g! U1 B/ A E& r当然,我们在识别2维码和条形码的时候也要预先知道,游戏设定了什么颜色来显示这个字体,然后才可能判断出这个2维码和条形码上面哪些才是有色点。
0 |# e4 `9 H3 u6 l. |
. L; r: t9 T9 R: x+ A5 K+ n: E等会我还有些关于2维码的新东西要发布。0 u4 ~5 D, l% D& u {
7 o0 i& b6 J) c/ E
明白了吗? |