我测试了一下,还是发现了问题,不过应该很容易修改了。$ ~ H1 s% i. o" S2 u
6 V/ @& _3 o2 v5 |7 ]' j" s
问题在于你对32bit tga图片字库还没有真正理解。; g' j$ ^& T- Z# m9 `/ B
首先,我附上一个游戏里的32bit tga图片字库文件,你用2进制编辑器打开看一下就知道了。# C* g0 x. t) i( ?; S: l) d% O
每个象素的前3个字节都是FF FF FF ,最后一个字节表示透明度,才有变化,是00-FF。
7 J$ f u" W# n) p( }+ c# k9 E
$ X0 _9 o x1 `% N [ g32bit tga图片字库其实只是反映了一个白色的字体的各个部分的透明程度,它本身不反映颜色信息。
* L2 Z1 }! F) B那颜色从哪里来的呢?" v. x# Q- ]6 H, O; y: H
颜色值其实是从游戏的配置文件里读取的,游戏把读取的颜色,比如说是黄色去替换32bit tga图片字库文件每个象素的前3个字节 FFFFFF ,然后配合最后一个字节,就在内存里生成了一张新的黄色字体的图片tga.用这张黄色字体的图片tga作为字体显示到屏幕上就得到了黄色的字体。同理,游戏的配置文件里设定的是红色的话,我们就能得到红色的字体。0 D9 {7 p9 Q* _8 r" q& x; p
8 I# e6 C4 B- h% [! q32bit tga图片字库有点像photoshop里的遮罩的作用。
8 v2 U/ |* g/ e/ M; p
8 x6 K1 P1 w1 [6 o+ D; l& g好,明白了这些。我们回过头来看看2维码和条形码。0 c0 R8 n' v& Z0 \, I/ G9 F) ]
其实非常简单了。# g: u) ~, Z3 K$ x) _& K) V
象素只分2种,有色象素和透明象素。
! J' `# M$ I9 k3 D: y
# ]% N2 Y( p ?4 B- m) F0 y. N有色象素就是 FF FF FF FF
" n- Z, [7 u$ L7 ^; T: J透明象素就是 FF FF FF 00/ w, y& k6 p+ w# `1 V
2 D+ }3 {9 D- @/ h' v3 \, s4 D当然,我们在识别2维码和条形码的时候也要预先知道,游戏设定了什么颜色来显示这个字体,然后才可能判断出这个2维码和条形码上面哪些才是有色点。
/ _ V3 n2 n- a5 \" m- k9 I h* ?/ Y9 w& Y) I( f) F
等会我还有些关于2维码的新东西要发布。: \+ l8 [0 Q8 I! s" O' y8 X
( D# A2 a9 j' ^$ H
明白了吗? |