冒险解谜游戏中文网 ChinaAVG

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

作者: shane007    时间: 2009-6-4 23:32
标题: 【大型图片字库AVG汉化第1弹】给肥牛和sspking的新任务 2009.6.4
要汉化ANKH,看来少不了要和TGA图像格式打交道了。
" H& e# u7 ^5 u; e# K找到修改TGA图片字库的简单高效的方法就是我们下一步要做的。
" }4 {5 s5 i7 T5 f6 [. [4 t- I1 W8 c% W: J
修改TGA图片字库不外乎三种方法
5 _4 w) z, e% ?+ q  Q, x1. 采用通用图像编辑软件编辑 如photoshop等
* Z# M$ K; a- p" I  ?2. 采用通用bitmap font 编辑软件编辑
" B) U) Z- B0 w% j9 x   这类软件很多,不过估计能符合我们的要求的比较难找) g/ |+ G8 H7 u, i% [) n
3. 自己制作编辑工具
+ y5 _5 m" F2 H0 U2 `4 H, e2 H
; j& n7 N% O2 V1 h% e; t! v希望2位寻找一下相关的工具,逐个试用一下。7 H% t6 X: ?6 V" p+ ^1 ?
如果都不行的话,构思自己开发制作一个图片字体工具。
5 a" L9 h: y* o7 f# _9 z5 C这个工具如果做得比较好的话,其他的汉化项目也可以派上用处。
: ?5 M) h* P2 Y* Z& g, ^, _. _' D
. }- Q9 J1 o/ D0 F7 u* kto 肥牛
4 o# u* \) X% A9 g2 \不知道你能否接手制作2维码tga图片字库工具的任务?' ?, [# X  ]0 H* p  U( Y
2维码tga估计只能够通过工具来制作了。
$ F+ n' K5 Y5 g: P4 F+ a$ L! a3 m- Y7 G
在tga问题上,我的知识也不多,和大家在同一条起跑线上。, }2 e# R( t5 a% [$ O& U3 j6 l" q
暂时还无法给出更加具体的设计。
作者: sspking    时间: 2009-6-4 23:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: shane007    时间: 2009-6-4 23:58
引用第1楼sspking于2009-06-04 23:55发表的  :
. V6 x! u( L+ b8 ?收到! m3 Q( [& \, P0 C. R
分析下TGA的结构先
8 B# A3 f4 D" T6 l) s) t' P你说的改TGA具体是改什么,改里面的内容,批量的?

3 y, a9 |( t* a8 g+ H0 H具体怎么改我自己也要好好想一下。8 l6 {3 i% b6 v) L6 l
你们先学习和试验熟悉相关资料和软件吧。
作者: 肥牛    时间: 2009-6-5 09:21
暂且让我再好好整理一下思路,好像很明白,又好像有些糊涂,这个感觉说不上来。% r* I+ E, B- ^! {/ W# U
( h+ X+ B% d0 ]- }% s7 P# C
刚才做了一个小工具,可以把JPG或者BMP的图片转成TGA格式的,属于“10 -  runlength 编码的 rgb 图像 ”。不知道要做的是不是这个意思。
作者: 慕容枫叶    时间: 2009-6-5 09:32
MS不是这个意思吧。2 T7 |+ `7 p/ X$ V
007的意思是制作2维码tga图片字库工具1 }& x' H; ~' v# h0 q
不是转换工具
作者: 肥牛    时间: 2009-6-5 09:49
所做的转换工具,只是表明可以生成TGA格式的文件。至于上面的内容,可以自己画上去啊。比如画几个竖条条,用什么颜色,多宽,多高等等,和画BMP没啥区别了。只是保存的时候保存成TGA就行了。
作者: shane007    时间: 2009-6-5 11:23
肥牛的思路是对的,可以先画个bmp之类的图片,然后转换,因为bmp比较容易编程序画。, H# t* G) i8 F% I% \
不过,你选的tga格式好像不对,应该是 2  -  未压缩的,rgb 图像。4 k0 I8 t! H% q/ i
每个像素有4个字节,分别是 BGRA ,是32bit 的带透明通道的tga.
$ W- I6 j6 h2 K, G然后头部18字节,尾部26字节。 3 [6 Q( p, J  \' b
你可以把游戏的tga用hexworkshop打开看一下。  t- y+ g$ A$ e" _, i
注意,只要你转换后的tga 每个像素对应4个字节的前3个字节是FF FF FF ,tga的图形和bmp一致,& q! t3 L0 p# I  M
那么你就转换对了。 你现在的这个工具,估计是不对的。1 F) `$ E# \& [7 t
' K7 e8 |0 f+ y2 C
往bmp上画的应该就是3X3像素的2维码,对应9位0和1 ,可以对应512句显示在屏幕中部的字幕。" E/ K4 c0 Y2 t( U1 |
3 \- G$ }) `: ^# h9 q1 k
明白了吗?
作者: 慕容枫叶    时间: 2009-6-5 14:42
明白了肥牛的意思……
2 s9 i8 @. M) z4 e% I& P& U是我搞糊涂了…………
作者: 肥牛    时间: 2009-6-5 14:50
修改了一下TGA输出格式,现在可以输出2类型的了。但是,我没有发现每个像素的前三个字节是FF FF FF 啊?
$ G: Z. }; X/ v, ^) X! i2 j+ o- b0 O3 _  m9 U/ t8 E  F: t6 L
增加了一个测试按钮,按下这个按钮后,会在图片的左上角(1,1)的位置生成一个二维的3*3点阵。
8 e" D1 ]* G9 h1 e黄色 透明 黄色
: i; g& h" Q1 s黄色 黄色 透明
8 j  C2 e! U6 C: i2 E2 s. @8 ~黄色 透明 透明
4 L" s0 n1 f$ w1 F9 a  ^- b
) x6 D8 r2 y: j) l  f007你可以测试一下这个的输出是否正确。
作者: shane007    时间: 2009-6-5 17:27
我测试了一下,还是发现了问题,不过应该很容易修改了。
, u4 t8 B, [1 G* r( r
& R$ \, X, f$ X  Y" X" M* p1 d问题在于你对32bit tga图片字库还没有真正理解。
7 X) N- n1 b; _首先,我附上一个游戏里的32bit tga图片字库文件,你用2进制编辑器打开看一下就知道了。) F* l6 k% ~  Z0 v# K5 A
每个象素的前3个字节都是FF FF FF ,最后一个字节表示透明度,才有变化,是00-FF。- _* b" K3 j% p6 V. k+ J
8 e3 N3 j& B( h; }
32bit tga图片字库其实只是反映了一个白色的字体的各个部分的透明程度,它本身不反映颜色信息。* i$ G3 |' s( Y2 x. b. D
那颜色从哪里来的呢?
. j" B1 S% k' z! }' z颜色值其实是从游戏的配置文件里读取的,游戏把读取的颜色,比如说是黄色去替换32bit tga图片字库文件每个象素的前3个字节 FFFFFF ,然后配合最后一个字节,就在内存里生成了一张新的黄色字体的图片tga.用这张黄色字体的图片tga作为字体显示到屏幕上就得到了黄色的字体。同理,游戏的配置文件里设定的是红色的话,我们就能得到红色的字体。8 y+ n4 J) S+ y7 ~2 s% g
9 u+ c/ H' Q3 B! A7 o7 r+ v
32bit tga图片字库有点像photoshop里的遮罩的作用。
  v9 V, |4 N" O/ }% a3 h# \& H, m' `: B% c8 O* L+ F
好,明白了这些。我们回过头来看看2维码和条形码。
1 K5 c1 c- X+ K( e% W$ V6 e9 y其实非常简单了。8 A; s  ~: H8 D% l" y( v
象素只分2种,有色象素和透明象素。
# _8 @" p$ Z2 V7 `' G2 q" N: ]3 y; }% _. b, f
有色象素就是 FF FF FF FF
: h6 c3 [( q, y7 G# N透明象素就是 FF FF FF 00( K9 `9 x* ^" H

) _, b5 i  b5 Y: ~) L% i当然,我们在识别2维码和条形码的时候也要预先知道,游戏设定了什么颜色来显示这个字体,然后才可能判断出这个2维码和条形码上面哪些才是有色点。9 C4 S" E/ S5 |; \6 \. z  K

' n% T5 T2 S2 Z7 ]0 n+ ]/ F等会我还有些关于2维码的新东西要发布。
- r" Y4 l! k* L5 ~
+ F$ ]: F. \8 m& b4 ~' C明白了吗?
作者: 肥牛    时间: 2009-6-5 18:26
不好意思,我现在开始糊涂了……" P' z8 k6 g! B* k2 C% r7 {; r, `
" u3 X* H/ O' p, D0 p
我刚才把你的这个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
首先,你看到一张白色的图片,没错,但是这不代表这张图片是全白色的。1 c; ]% G5 J7 z0 Y3 ~$ K2 `) E
其实是把白色点和透明点混在一起都以白色显示了。7 ~- u5 F7 @  c; z+ \- U1 S
* @, t6 y4 N6 ?; N9 t: H) p- u
我是使用 paint shop pro的,有一个搜寻图像的功能。ctrl+alt+v 。
; Q, e4 r( v( X/ ^我打开时也是白色的,用了搜寻图像的功能就能看出上面的字母。0 E, V' J9 c+ v
你可以试试看。0 f2 K0 f0 m' m3 k7 r8 s& V0 i

4 H4 p- X& s( g* ^6 _4 ~待续
作者: shane007    时间: 2009-6-5 18:42
其实,我已经说了。7 Y- }1 O' R# G- @& l2 b9 \
这个2维码,条形码 其实很简单,你就按我说的做就行了
% R5 s4 V+ {3 _; {
0 p* G0 a+ g$ p( Y1 u0 K有色象素就是 FF FF FF FF   
# M; c6 h8 H7 g- A/ X+ ~! r& f透明象素就是 FF FF FF 00
8 y! B) d0 j' E' ~+ T( N1 {5 D; }  t- \4 K% j
tga的数据部分只有FF 或001 U, S8 I  s2 n3 d4 U
直接写tga,完全不需要bmp的。' ?' t6 E6 y5 l
完全不需要在一张图片上加东西,我们新建就行,加头。1 E* }/ Y1 o6 T) A# H/ `
尾部没用,可忽略也可加上。
作者: shane007    时间: 2009-6-5 19:20
我猜想你是不是这里理解错了。5 m4 q0 }( E6 j% F% U- }
你是不是认为我比较2维码的时候是带背景一起比较的?4 F% b- M$ Y3 e$ O1 I' z# W
其实我只比较有色点中和字体设定颜色一致的点,比如说是黄色。- a6 X# R& t) A/ A0 g3 k! {
所以字体tga文件中只有有色点和透明点的概念。
作者: 肥牛    时间: 2009-6-5 23:44
麻烦007再测试一下这个,我没有Paint Shop pro,所以我看到的全是白色的点,只有用WINHEX才能到。
作者: shane007    时间: 2009-6-6 10:58
这个应该对了,符合我的要求。
- f9 [- ^0 l; t9 W  P. h建议你还是找个paint shop pro看看。! A' ^' {" j/ f; t" T8 j7 m, H
对了,你的测试数据里怎么会有2 的?
作者: shane007    时间: 2009-6-6 11:02
补充一下,以后还需要加入生成xml的功能。
' Q5 {* F* J0 f3 t不过应该不难。因为图片大小都是固定的。
作者: shane007    时间: 2009-6-6 11:06
你把校验码的概念也理解透之后就可以正式动手制作工具了。% g4 [* G9 g3 k, f9 {" r
条形码的也一样,比2维码还简单,只有2个字母,一个1X1有色点和一个透明点。
. q% m( B* S2 J  L, K; P5 ?菜单的tga我要发个资料说明一下,有点复杂。
作者: 肥牛    时间: 2009-6-8 08:32
引用第15楼shane007于2009-06-06 10:58发表的  :
+ v: }1 o, l, m4 w  Z这个应该对了,符合我的要求。+ c# Q( J0 _/ K, w/ S6 ?' ?
建议你还是找个paint shop pro看看。5 F+ R. v. n; a! l
对了,你的测试数据里怎么会有2 的?
呵呵,2是我随便做测试用的。0就是透明点,非0就是颜色点。所以1和2甚至9、A、B都是一样的。
作者: shane007    时间: 2009-6-8 11:11
引用第18楼肥牛于2009-06-08 08:32发表的  :% h9 K5 l1 j/ p) d
4 V! @- y8 |% G4 Q3 |& W
呵呵,2是我随便做测试用的。0就是透明点,非0就是颜色点。所以1和2甚至9、A、B都是一样的。

' j$ z6 s7 |, w6 V$ l( c& p原来如此。




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