冒险解谜游戏中文网 ChinaAVG

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

作者: shane007    时间: 2009-6-4 23:32
标题: 【大型图片字库AVG汉化第1弹】给肥牛和sspking的新任务 2009.6.4
要汉化ANKH,看来少不了要和TGA图像格式打交道了。
  ~/ t9 P( }+ T找到修改TGA图片字库的简单高效的方法就是我们下一步要做的。; R9 K& i3 E) n  `% P+ m2 Z( M
2 p* Q& j! M; @7 M, `/ B" x. Q: B
修改TGA图片字库不外乎三种方法% |% n; s) C: F& U" E: E& t
1. 采用通用图像编辑软件编辑 如photoshop等
) ~* w# y" `5 F$ ?/ N. K2. 采用通用bitmap font 编辑软件编辑1 L, p6 g1 u/ _: [6 t) g. z
   这类软件很多,不过估计能符合我们的要求的比较难找, s4 h5 S+ \* p; i# Y* f7 i
3. 自己制作编辑工具
' Z) Q; Y' c' p; U( {( B' k
2 h/ [' G- j- G  D: U9 W希望2位寻找一下相关的工具,逐个试用一下。/ V% g8 L3 k, i- x, Y! y
如果都不行的话,构思自己开发制作一个图片字体工具。: v, o; W2 I( B& o+ j5 z
这个工具如果做得比较好的话,其他的汉化项目也可以派上用处。/ m( V, `/ V, N% I, q3 ]  ?& O

$ F8 N2 V. h5 V2 v4 d- ^1 jto 肥牛 * ?5 x3 f4 a$ a  n! D7 D
不知道你能否接手制作2维码tga图片字库工具的任务?
( O# m& \; {  O+ c1 O2维码tga估计只能够通过工具来制作了。4 `- `1 m9 Q& {; y0 T6 x4 f% R* g
- [8 e* I* z  K& R
在tga问题上,我的知识也不多,和大家在同一条起跑线上。
' c# }" m; v& N- [: R3 m暂时还无法给出更加具体的设计。
作者: sspking    时间: 2009-6-4 23:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: shane007    时间: 2009-6-4 23:58
引用第1楼sspking于2009-06-04 23:55发表的  :. e* s4 g9 t6 Y6 q6 h( B
收到* ^& |7 M0 d1 x9 b& N- W* o
分析下TGA的结构先' e* D* g% E* D" j4 _& Q
你说的改TGA具体是改什么,改里面的内容,批量的?

. Q0 g& v. g( Q8 Z. A. C1 P具体怎么改我自己也要好好想一下。
, n  U9 h3 {: w. O5 k, j# I2 A. P你们先学习和试验熟悉相关资料和软件吧。
作者: 肥牛    时间: 2009-6-5 09:21
暂且让我再好好整理一下思路,好像很明白,又好像有些糊涂,这个感觉说不上来。0 ~$ ]# w4 H: s

( U1 [9 X, {; D% T2 k刚才做了一个小工具,可以把JPG或者BMP的图片转成TGA格式的,属于“10 -  runlength 编码的 rgb 图像 ”。不知道要做的是不是这个意思。
作者: 慕容枫叶    时间: 2009-6-5 09:32
MS不是这个意思吧。- W4 g' x" u9 l: T' t$ E% I% P
007的意思是制作2维码tga图片字库工具6 H6 V- C. I0 \- G# B
不是转换工具
作者: 肥牛    时间: 2009-6-5 09:49
所做的转换工具,只是表明可以生成TGA格式的文件。至于上面的内容,可以自己画上去啊。比如画几个竖条条,用什么颜色,多宽,多高等等,和画BMP没啥区别了。只是保存的时候保存成TGA就行了。
作者: shane007    时间: 2009-6-5 11:23
肥牛的思路是对的,可以先画个bmp之类的图片,然后转换,因为bmp比较容易编程序画。
! i" ^5 l: ^+ C+ c$ Y1 D3 R不过,你选的tga格式好像不对,应该是 2  -  未压缩的,rgb 图像。
; P2 J8 @- B) e8 V7 G( I每个像素有4个字节,分别是 BGRA ,是32bit 的带透明通道的tga.( ?- e1 Z7 `# a! |! X9 V- ?
然后头部18字节,尾部26字节。
) ]% T: R# S$ C! r% {0 g+ e5 o2 A7 P你可以把游戏的tga用hexworkshop打开看一下。5 z% b! I  l  f# e- Y. e
注意,只要你转换后的tga 每个像素对应4个字节的前3个字节是FF FF FF ,tga的图形和bmp一致,, C" K. }( P7 n5 r2 f
那么你就转换对了。 你现在的这个工具,估计是不对的。
4 a9 a* _* i9 W8 a# k0 R3 h4 Q9 {; A5 e/ R5 [8 y+ |5 F$ P
往bmp上画的应该就是3X3像素的2维码,对应9位0和1 ,可以对应512句显示在屏幕中部的字幕。
9 J6 T; ^$ \) }  B# H- C" I8 }, b# @$ u, X6 Q$ o! k
明白了吗?
作者: 慕容枫叶    时间: 2009-6-5 14:42
明白了肥牛的意思……$ k$ A/ j( r: c; F- p% q5 `
是我搞糊涂了…………
作者: 肥牛    时间: 2009-6-5 14:50
修改了一下TGA输出格式,现在可以输出2类型的了。但是,我没有发现每个像素的前三个字节是FF FF FF 啊?
( e* L0 }/ F/ s( r; S
' V% O9 Z; g5 T2 L增加了一个测试按钮,按下这个按钮后,会在图片的左上角(1,1)的位置生成一个二维的3*3点阵。
) c- H8 J4 m7 `7 `1 ^7 v6 V+ n黄色 透明 黄色# C, K& ^! j  {: a- y
黄色 黄色 透明
/ t# h: ~4 I3 B" z1 P黄色 透明 透明( K' O2 [6 h$ g. ~4 T( _& N

$ }+ a! @( q4 R( B9 S# j1 @" i! U! P007你可以测试一下这个的输出是否正确。
作者: shane007    时间: 2009-6-5 17:27
我测试了一下,还是发现了问题,不过应该很容易修改了。8 n! e5 R5 {! t) S% D

$ w) O2 s' c& B% |: x' n问题在于你对32bit tga图片字库还没有真正理解。
- J+ ?0 J' S# B首先,我附上一个游戏里的32bit tga图片字库文件,你用2进制编辑器打开看一下就知道了。
. s' \5 x8 O4 \9 y) ^每个象素的前3个字节都是FF FF FF ,最后一个字节表示透明度,才有变化,是00-FF。" e, r" J  B  {( [

' F& X: q3 ^1 G3 j32bit tga图片字库其实只是反映了一个白色的字体的各个部分的透明程度,它本身不反映颜色信息。
1 |  Y4 b7 u8 |4 Y9 u  W那颜色从哪里来的呢?
2 [+ V/ m* C- C3 m颜色值其实是从游戏的配置文件里读取的,游戏把读取的颜色,比如说是黄色去替换32bit tga图片字库文件每个象素的前3个字节 FFFFFF ,然后配合最后一个字节,就在内存里生成了一张新的黄色字体的图片tga.用这张黄色字体的图片tga作为字体显示到屏幕上就得到了黄色的字体。同理,游戏的配置文件里设定的是红色的话,我们就能得到红色的字体。
2 H/ o) E" J/ K, p6 I+ H! w; t  A  c( I. ~
32bit tga图片字库有点像photoshop里的遮罩的作用。( Z! t# \. p$ U  q" V! w

) a" I0 e- s3 i& ~9 p4 K好,明白了这些。我们回过头来看看2维码和条形码。( I0 Y, w* w/ R6 Q: q# v  U. X
其实非常简单了。% @) U8 L3 z8 }1 ]: c5 s; z
象素只分2种,有色象素和透明象素。1 ?# [; Z9 b1 F/ O

/ _8 k; C( M9 M1 j- M+ j) p有色象素就是 FF FF FF FF
1 y/ f. N! H' m4 O7 x, s) u透明象素就是 FF FF FF 00
1 H' s% [4 G8 j; S
* P' |! M( B. ]8 y当然,我们在识别2维码和条形码的时候也要预先知道,游戏设定了什么颜色来显示这个字体,然后才可能判断出这个2维码和条形码上面哪些才是有色点。  X8 l& j3 G, H* Q& [. _

* r' D/ s& J9 M: n. _0 G等会我还有些关于2维码的新东西要发布。
3 n8 V5 y$ U0 ]; X! z) y7 Q
" z4 d% P+ [6 r1 y% U( Y( V明白了吗?
作者: 肥牛    时间: 2009-6-5 18:26
不好意思,我现在开始糊涂了……7 N& `$ p! c7 s7 i  m1 `% Q

6 `; O- v8 Z6 z我刚才把你的这个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
首先,你看到一张白色的图片,没错,但是这不代表这张图片是全白色的。
3 W( [1 a, N5 D4 U0 p% F$ T, e其实是把白色点和透明点混在一起都以白色显示了。* K; t0 I& s" A! \6 d$ E
3 p. R  m5 i6 O  J5 K
我是使用 paint shop pro的,有一个搜寻图像的功能。ctrl+alt+v 。4 ]% L& {7 `9 X- X# u) s
我打开时也是白色的,用了搜寻图像的功能就能看出上面的字母。
& P4 F( M# r! C9 @0 U  z你可以试试看。
$ m2 |4 _8 _1 ~" ~' u  i" W) V4 e6 z- \; ^5 P6 w% _+ [3 ?4 C
待续
作者: shane007    时间: 2009-6-5 18:42
其实,我已经说了。
; ^) @' q  z9 j$ H2 t1 @  \这个2维码,条形码 其实很简单,你就按我说的做就行了
; W2 W# y, O* y( u0 b7 K
2 R$ d* Y! `  G8 n  {3 Y8 i有色象素就是 FF FF FF FF   
) B( R6 M* ?. N4 _" S透明象素就是 FF FF FF 00 / B& I" a  l. P
, u; Z) V- Z, k  _
tga的数据部分只有FF 或00
5 n) k% ^4 g1 h% A! i直接写tga,完全不需要bmp的。; z' a+ ~3 Y- v8 g; e
完全不需要在一张图片上加东西,我们新建就行,加头。
! |2 Q5 _) ]; u+ E! i& t1 r尾部没用,可忽略也可加上。
作者: shane007    时间: 2009-6-5 19:20
我猜想你是不是这里理解错了。5 v0 ^" D1 `3 ]( r3 f& Z, ^
你是不是认为我比较2维码的时候是带背景一起比较的?9 H' [. m6 I" K4 m2 [* ?+ k7 d
其实我只比较有色点中和字体设定颜色一致的点,比如说是黄色。- j* J  C8 s" `5 t5 b
所以字体tga文件中只有有色点和透明点的概念。
作者: 肥牛    时间: 2009-6-5 23:44
麻烦007再测试一下这个,我没有Paint Shop pro,所以我看到的全是白色的点,只有用WINHEX才能到。
作者: shane007    时间: 2009-6-6 10:58
这个应该对了,符合我的要求。6 P" l5 v% x, a. T. U
建议你还是找个paint shop pro看看。
% F2 T/ f! f" W对了,你的测试数据里怎么会有2 的?
作者: shane007    时间: 2009-6-6 11:02
补充一下,以后还需要加入生成xml的功能。9 c8 @2 Y: ]' o1 O: t- J4 I
不过应该不难。因为图片大小都是固定的。
作者: shane007    时间: 2009-6-6 11:06
你把校验码的概念也理解透之后就可以正式动手制作工具了。
  l$ h4 R5 J. g" H条形码的也一样,比2维码还简单,只有2个字母,一个1X1有色点和一个透明点。  h: T9 J9 t, e# _! s/ p' P9 @
菜单的tga我要发个资料说明一下,有点复杂。
作者: 肥牛    时间: 2009-6-8 08:32
引用第15楼shane007于2009-06-06 10:58发表的  :
* s) K$ u5 m2 j7 E这个应该对了,符合我的要求。
+ b6 y/ L0 @  _' [建议你还是找个paint shop pro看看。7 R, G3 U, o" X& D7 V4 W( q
对了,你的测试数据里怎么会有2 的?
呵呵,2是我随便做测试用的。0就是透明点,非0就是颜色点。所以1和2甚至9、A、B都是一样的。
作者: shane007    时间: 2009-6-8 11:11
引用第18楼肥牛于2009-06-08 08:32发表的  :
, n/ o7 }' S2 \* B* C' J) X# a: C# V) c8 S# X
呵呵,2是我随便做测试用的。0就是透明点,非0就是颜色点。所以1和2甚至9、A、B都是一样的。
" a# i3 \/ I8 k: L1 \5 `
原来如此。




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