冒险解谜游戏中文网 ChinaAVG

标题: 【大型图片字库AVG汉化第1弹】给肥牛和sspking的新任务 2009.6.4 [打印本页]

作者: shane007    时间: 2009-6-4 23:32
标题: 【大型图片字库AVG汉化第1弹】给肥牛和sspking的新任务 2009.6.4
要汉化ANKH,看来少不了要和TGA图像格式打交道了。
' n! w- r& n/ p找到修改TGA图片字库的简单高效的方法就是我们下一步要做的。
' }! p8 n# D4 l0 F. \# q% j  r) G, L) s" g/ E; ]- c) j. V7 k
修改TGA图片字库不外乎三种方法
  L. g. L* B( i$ ~; M1. 采用通用图像编辑软件编辑 如photoshop等
) M- a+ h6 _$ j$ G2. 采用通用bitmap font 编辑软件编辑
# b* R/ H; k3 J6 k( @& J" s- q   这类软件很多,不过估计能符合我们的要求的比较难找" j* z& p8 X3 _& Z7 M3 C4 X7 J+ `
3. 自己制作编辑工具1 l$ G/ L+ n5 x, E
; g: T. s! D& e- [$ K, M
希望2位寻找一下相关的工具,逐个试用一下。  x" t: j3 Y0 h
如果都不行的话,构思自己开发制作一个图片字体工具。
0 d8 C7 D# L9 R; q这个工具如果做得比较好的话,其他的汉化项目也可以派上用处。4 \. s. M  X* b1 u, {+ c# k3 }

. T# c( @/ X) J0 E9 R* y2 I$ [to 肥牛
9 G/ ]2 G6 |1 S# r不知道你能否接手制作2维码tga图片字库工具的任务?
) c2 w6 u" q  x0 ]8 j# C& _: o2维码tga估计只能够通过工具来制作了。
4 e; e# T8 M5 q
* @9 e5 [: C5 R# X在tga问题上,我的知识也不多,和大家在同一条起跑线上。
5 H2 f% j" {, z# v1 x2 v/ N暂时还无法给出更加具体的设计。
作者: sspking    时间: 2009-6-4 23:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: shane007    时间: 2009-6-4 23:58
引用第1楼sspking于2009-06-04 23:55发表的  :
7 e) F1 Q( P' d" H收到
0 z! }$ r3 `" S- n9 e/ |分析下TGA的结构先
3 x! `% l/ M  Y- L+ o9 y你说的改TGA具体是改什么,改里面的内容,批量的?
2 a7 p/ f1 L: z4 V/ C0 M2 g2 D
具体怎么改我自己也要好好想一下。" {, u# z6 f8 T/ o- O: y, ^$ N
你们先学习和试验熟悉相关资料和软件吧。
作者: 肥牛    时间: 2009-6-5 09:21
暂且让我再好好整理一下思路,好像很明白,又好像有些糊涂,这个感觉说不上来。; V  h. H" ^( W: h+ V& x
0 z7 S# @% H& r8 j
刚才做了一个小工具,可以把JPG或者BMP的图片转成TGA格式的,属于“10 -  runlength 编码的 rgb 图像 ”。不知道要做的是不是这个意思。
作者: 慕容枫叶    时间: 2009-6-5 09:32
MS不是这个意思吧。
5 A, b1 X% L/ ]; S# U. \007的意思是制作2维码tga图片字库工具
. Y/ Y# v! D" H* [% A不是转换工具
作者: 肥牛    时间: 2009-6-5 09:49
所做的转换工具,只是表明可以生成TGA格式的文件。至于上面的内容,可以自己画上去啊。比如画几个竖条条,用什么颜色,多宽,多高等等,和画BMP没啥区别了。只是保存的时候保存成TGA就行了。
作者: shane007    时间: 2009-6-5 11:23
肥牛的思路是对的,可以先画个bmp之类的图片,然后转换,因为bmp比较容易编程序画。
4 S5 \' k# N, A" @不过,你选的tga格式好像不对,应该是 2  -  未压缩的,rgb 图像。
$ T7 f2 L+ N6 ?; Q% t每个像素有4个字节,分别是 BGRA ,是32bit 的带透明通道的tga.
6 D, Q& w( y) v" [然后头部18字节,尾部26字节。 9 K% I! P" v+ i+ P
你可以把游戏的tga用hexworkshop打开看一下。* B+ @* R* C, z
注意,只要你转换后的tga 每个像素对应4个字节的前3个字节是FF FF FF ,tga的图形和bmp一致,
8 j4 [2 I4 Q1 D8 O6 b+ e0 w! d那么你就转换对了。 你现在的这个工具,估计是不对的。
6 j6 R) K( @( f( K7 o5 {$ `  }2 I/ J  g% s/ K9 w: \( a
往bmp上画的应该就是3X3像素的2维码,对应9位0和1 ,可以对应512句显示在屏幕中部的字幕。6 M& O( H+ n3 e0 Q. w

4 R- ^  _9 Q- I7 T4 {明白了吗?
作者: 慕容枫叶    时间: 2009-6-5 14:42
明白了肥牛的意思……
, k2 K$ [6 q, n% {" V5 M是我搞糊涂了…………
作者: 肥牛    时间: 2009-6-5 14:50
修改了一下TGA输出格式,现在可以输出2类型的了。但是,我没有发现每个像素的前三个字节是FF FF FF 啊?
1 ?: \, @) Q1 b$ V) G
4 K4 e7 l/ d& r3 D增加了一个测试按钮,按下这个按钮后,会在图片的左上角(1,1)的位置生成一个二维的3*3点阵。& |" K: W6 f# r- j5 I( F; D
黄色 透明 黄色
) K8 E8 I+ A! o3 ^1 X3 `6 N& T黄色 黄色 透明- F% G, u3 D! w& x+ `
黄色 透明 透明. f; v  f6 v& m: U- y
' [" H2 w) P4 X9 |8 g2 b$ |
007你可以测试一下这个的输出是否正确。
作者: shane007    时间: 2009-6-5 17:27
我测试了一下,还是发现了问题,不过应该很容易修改了。
" J% S. i$ v. h8 b: Z; ~  k
( g( B; Z/ p/ a问题在于你对32bit tga图片字库还没有真正理解。& d( U7 ^% s+ n3 Y2 R
首先,我附上一个游戏里的32bit tga图片字库文件,你用2进制编辑器打开看一下就知道了。
& U" v/ q& S* v) h7 k每个象素的前3个字节都是FF FF FF ,最后一个字节表示透明度,才有变化,是00-FF。1 e+ O( d. x9 r6 ~& i+ |0 k

+ z" L* s( [- U3 W3 x) o" M32bit tga图片字库其实只是反映了一个白色的字体的各个部分的透明程度,它本身不反映颜色信息。# J" _$ d& M( w  `0 ~% D/ Y
那颜色从哪里来的呢?
$ M2 w3 Q6 c$ \- p( H颜色值其实是从游戏的配置文件里读取的,游戏把读取的颜色,比如说是黄色去替换32bit tga图片字库文件每个象素的前3个字节 FFFFFF ,然后配合最后一个字节,就在内存里生成了一张新的黄色字体的图片tga.用这张黄色字体的图片tga作为字体显示到屏幕上就得到了黄色的字体。同理,游戏的配置文件里设定的是红色的话,我们就能得到红色的字体。8 S& d) V) f' ]4 T/ d5 @! R! X0 j
8 I) H+ N! y7 d8 H8 c
32bit tga图片字库有点像photoshop里的遮罩的作用。
6 l' Y8 `5 F" c: {0 y. l5 f' w7 L9 y* k( B4 Z
好,明白了这些。我们回过头来看看2维码和条形码。
6 z5 V0 f5 M0 v' D( J7 B4 g其实非常简单了。
3 @! ~: I: R( B象素只分2种,有色象素和透明象素。7 X; M' q4 C" H/ I6 ?( w
) y% u4 K( M8 Q5 i5 B
有色象素就是 FF FF FF FF
: j2 K9 }" O; Y0 A0 V: [3 o8 _5 x透明象素就是 FF FF FF 00
% R3 y) F+ U) |; ?% a2 X1 ~/ W' M1 j5 O
当然,我们在识别2维码和条形码的时候也要预先知道,游戏设定了什么颜色来显示这个字体,然后才可能判断出这个2维码和条形码上面哪些才是有色点。
1 P0 t5 N. A, s  w6 L6 `% Y1 X1 o+ t6 h7 j, K
等会我还有些关于2维码的新东西要发布。; v/ G- |+ Q( y

8 m1 Q. [' y0 `) j" D  J9 w' r明白了吗?
作者: 肥牛    时间: 2009-6-5 18:26
不好意思,我现在开始糊涂了……
& `& X% [  m; a) e9 m5 j0 @+ }3 m1 k" D/ R2 }
我刚才把你的这个TGA文件下载下来了,然后我打开它,发现就是一张白色的图片。于是我把这个图片转成了BMP格式,在我写的工具里加载它,再在上面打上我的二维码的标记(就是点击测试按钮),然后再输出成TGA格式的(也按照32位输出)。在WINHEX中对比你的TGA和我的TGA就能发现,文件大部分是完全相同的,起码结构是一样的。仅仅是你给的TGA文件在文件末尾加了一行标识(TRUEVISION-XFILE),另外,文件中间部分,本来应该是FF FF FF 00,但是中间出现了一些杂点,也就是你说的一些点的透明度有变化。在我生成的文件中没有,可能是在转BMP的过程中丢失。我写的几个点也正常,黄色的是00 FF FF 00,透明的保持FF FF FF 00不变。莫非你的意思是黄色的点应该是00 FF FF FF, 而透明的点应该是00 FF FF 00?
作者: shane007    时间: 2009-6-5 18:41
首先,你看到一张白色的图片,没错,但是这不代表这张图片是全白色的。! Q1 i4 H7 V7 y( K" j" {( x
其实是把白色点和透明点混在一起都以白色显示了。$ R* _* ~; I5 G
. I& f* x% g; e$ `
我是使用 paint shop pro的,有一个搜寻图像的功能。ctrl+alt+v 。- u7 q( [( O" g9 Y+ F1 D# R, p
我打开时也是白色的,用了搜寻图像的功能就能看出上面的字母。( W$ E. R7 ^; p% z
你可以试试看。
0 X2 a( F2 K( K4 q
" |' z7 l& M! i! t# P1 f0 e待续
作者: shane007    时间: 2009-6-5 18:42
其实,我已经说了。8 K: M& s& y5 o9 I: u7 {
这个2维码,条形码 其实很简单,你就按我说的做就行了  F) A# N) |! [# p/ C, O; h

; \* v0 y, H" @有色象素就是 FF FF FF FF   1 t3 T2 b+ `) |9 w5 x$ {9 p- u
透明象素就是 FF FF FF 00 : }- T1 s( v; r5 R2 x8 H+ r4 f- y4 A( X
" e- O" T8 r$ o) ?+ O1 x; `
tga的数据部分只有FF 或00- ~$ |9 t* @' L* p1 Y  V
直接写tga,完全不需要bmp的。) A7 a  x1 J. p( o8 q7 d% b4 D
完全不需要在一张图片上加东西,我们新建就行,加头。# o. y4 ~' U5 i5 Q+ M$ w
尾部没用,可忽略也可加上。
作者: shane007    时间: 2009-6-5 19:20
我猜想你是不是这里理解错了。" V/ M' f5 ~6 ~: [
你是不是认为我比较2维码的时候是带背景一起比较的?9 y' o/ c) e9 y3 k
其实我只比较有色点中和字体设定颜色一致的点,比如说是黄色。
$ _& ]( u9 h8 e% Z3 t9 y( D+ V所以字体tga文件中只有有色点和透明点的概念。
作者: 肥牛    时间: 2009-6-5 23:44
麻烦007再测试一下这个,我没有Paint Shop pro,所以我看到的全是白色的点,只有用WINHEX才能到。
作者: shane007    时间: 2009-6-6 10:58
这个应该对了,符合我的要求。; L% a% b0 g3 x+ e0 V$ ^0 W+ P
建议你还是找个paint shop pro看看。. z8 w& N* P- P2 P# T) s2 c
对了,你的测试数据里怎么会有2 的?
作者: shane007    时间: 2009-6-6 11:02
补充一下,以后还需要加入生成xml的功能。% T4 k, ?% x- G) J) u7 g# l/ N6 J' p$ s
不过应该不难。因为图片大小都是固定的。
作者: shane007    时间: 2009-6-6 11:06
你把校验码的概念也理解透之后就可以正式动手制作工具了。
2 U1 F& F! E2 W% c$ G7 m# g条形码的也一样,比2维码还简单,只有2个字母,一个1X1有色点和一个透明点。
: ~' w; n( o: v. ]菜单的tga我要发个资料说明一下,有点复杂。
作者: 肥牛    时间: 2009-6-8 08:32
引用第15楼shane007于2009-06-06 10:58发表的  :
) O: z9 E* J* T9 e2 C这个应该对了,符合我的要求。
+ X' y: E4 T3 }5 b0 A建议你还是找个paint shop pro看看。# y* W; w6 u  \  E' x2 m
对了,你的测试数据里怎么会有2 的?
呵呵,2是我随便做测试用的。0就是透明点,非0就是颜色点。所以1和2甚至9、A、B都是一样的。
作者: shane007    时间: 2009-6-8 11:11
引用第18楼肥牛于2009-06-08 08:32发表的  :
: Y; @1 W5 _4 O4 K% `# ]9 E) g' U& `2 q1 r6 v( K9 m
呵呵,2是我随便做测试用的。0就是透明点,非0就是颜色点。所以1和2甚至9、A、B都是一样的。

8 ]$ [( b; ^8 u$ X: n' y. ]原来如此。




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://www.chinaavg.com/) Powered by Discuz! X3.2