设为首页收藏本站官方微博

汉化工具 ND16、17图片转换工具

[复制链接]
查看: 2562|回复: 6
打印 上一主题 下一主题

[汉化工具] ND16、17图片转换工具

跳转到指定楼层
楼主
发表于 2009-9-15 22:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

ND16、17图片转换工具

先挖个坑,慢慢填" E9 v1 Q, y! ]1 {& y0 B
' u; b0 X5 M2 o
计划包含两个工具
' s( J3 Q# h: J  }$ r, \其一,cif文件——解压缩——转换成bmp图* s, A$ L2 E% _6 D% B" N
其二,bmp图——逆转换——压缩成cif文件; \$ f! \9 B& x: U" E. G  y$ {" B

* [. ^8 `' _$ Y& t. V5 c' {  x第一个应该要实现批量转换,就是读取Ciftree.dat头部文件表,然后将所有图片文件解压缩,转换
6 s. K' b6 C% P. w; @7 h0 i第二个只需要单张处理就行了,毕竟相对于原来的大量图片,需要PS的只是很少的部分5 c) ?. s8 ?) A. W1 x" b

4 D) H8 w+ J* y. p. {4 h8 S————————————————————————————————————————————
" M# ]- R  Q$ Q7 g! OND16、17图片文件格式详解:! k. w3 q9 ~4 I4 c, p

8 w( L3 t) Y0 C$ z3 S7 f; Q首先判断是不是图片,可以在Ciftree.dat的头部文件表里文件名后14个字节的地方看看有没有数据,此处存放是图片宽高像素,各4个字节,基本上两个数据都不等于0就是图片了1 R" z5 X: g/ u0 N* e& v' {

8 {* E7 R( T; }- d7 w图片文件在lzss解压缩后数据结构是 文件头+bmp图像RGB数据0 n' O) ?: _( t) G% [3 C0 `
+ a8 l! m# B+ W
其中,图片有两种格式,一种是32位图像,一种是24位图像! |; b/ F8 X" N# r+ y
前者的文件头长度是18个字节,后者的文件头长度是31个字节(其中还有字串“Contains”)<—(有误,见下面更新)! ]9 G) @# {) f: h

9 v8 n/ L3 Y1 ^+ h* K+ W具体判断方式是 宽像素*高像素*4和文件大小比较! e# l3 }5 ?! t( g" r4 Q0 t7 z
如果是32位图像,则文件大小比上述计算所得值大18个字节0 C3 U. w$ c2 f1 x
如果是24位图像,则文件大小比上述计算值小,应该是等于 宽*高*3+31( L4 ]6 e& y: k4 `$ o
  p: X; R5 p, Z$ n! {" Z* v; w
文件头之后就是图片的RGB数据,32位图像是4个字节表示一个像素,而24位图像是3个字节表示一个像素,这也就是为什么上面要乘3、4的原因。. r3 o6 Y8 p& [: A. t, {

! }7 L4 G5 }6 a4 i3 q) \转换工作,32位图像很简单,去掉那18个字节的文件头,然后填上32位BMP图像的文件头就可以了,BMP图像文件头数据比较简单,网上资料很多,这里就不详述了。8 S" W- q+ ~9 p3 A( \' [

! B/ j8 ^8 v; O" q+ y) u24位图像转换要稍微麻烦点,因为24位bmp图片在显示时,如果每一行字节数不是4的倍数,就需要补足字节,举个例子,39*33的图片,每行的字节数是39*3=117,不是4的倍数,因此每一行都要补3个字节。同时文件大小和RGB数据大小也改变了,在写文件头的时候也要注意。
7 o" S) ?' S; ^1 V+ y% \% z0 c6 |" e$ Y8 I/ n; ^' r+ `# H
需要注意的是,存放的RGB数据是逆向的,如果直接复制,转换出来的图片就是倒着的,所以要先读取最后一行的RGB数据,然后从后往前读,最后输出的才是正向的图片。1 y5 W/ {. e! J, D" R
" R; c/ ?$ ]6 n3 D/ C: a3 z
2 W/ M, T/ F! Z% K! K8 Q% g
至于逆转换,就是上面说的那些倒过来做一遍,不多说了。# Y+ L* _/ h5 V: ?

% o7 I& \  q' f& M  D——————————————————————————————————————————. A! x2 x8 u, u2 [% f: l
以上是理论部分,至于实践部分,目前完成了单张图片的正向转换工具* G  A. _, d$ C6 M' P3 y

1 G' p( q3 K( _使用方法:8 w- d8 l, Q) V, E% ~5 ]- M
    把待转换的文件和head文件和工具放在一起,命令提示符下convert filename,程序就会自动找出head里对应的文件,读取宽高像素,解压缩,转换。# ^3 o* D* t( S. R5 V
& \( f' b7 O) P/ |* U1 Z% q$ f
附件包里包括了工具、head文件、一个待转换文件、一个我写完命令的bat文件,有兴趣的童鞋可以下下来解压,直接运行那个.bat,如果正常的话,你可以在目录下找到一个lzss解压缩后的文件和一张转换完成的图片。
6 u* I5 |9 ~# ?9 l+ v$ N- Z
5 A$ I) B% D& \8 j4 h——————————————————————————————————————————
& E, r7 L) ^& |, {0 k
/ s8 f9 z( s3 l/ X9 |' a! \* B其实呢,本来批量转换的代码都写好了,但是由于原来的lzss解压工具无法重复运行,批量转换工具暂时难产了。1 u' I6 V. a: @1 F% ~$ b8 P
就是说我将那解压缩代码添到工具里后,重复执行解压缩程序后,只有第一次能正常解压,后来解压缩出来的文件数据都是错掉的。
, i& M0 J  s: D' S9 p) t$ d! {/ ?& i( C/ c. G4 h
最简单的如下代码也只有file1能够正常解压,file3解压出来的数据有错误5 g0 }: }- _0 A. O/ E: _$ L8 d
main(){1 U1 N& m! `) f8 K
lzss(2,file1,file2);   //  2代表解压,前一个文件是源文件,后者是解压后生成文件/ d6 F9 Y- V1 Z6 U* b4 F1 d2 ~" m7 i: ?$ N
lzss(2,file3,file4);* Y' q  ]# e) }9 s; J
}( \" r8 n2 I# I2 B: t4 \
) r' U# b( i9 g
可能是我添代码的时候出了问题,也可能是原来解压程序的代码有问题,运行完部分数据没有初始化。正在研究中.....
, H/ R0 X  i" h; m; a& _# ~/ V- o
未完待续....) i* s7 d8 M" t# ]  \( o' h8 |
——————————————————————————————————————————
7 Z: r, U$ H' K9 }: P$ @" R09.09.16更新
6 G. b( `( @" r, ~- \# X
% W8 k2 U; r5 p8 I% L昨晚睡觉时突然想到,批量转换其实也可以用批处理.bat文件完成,这样就不需要再编程了5 C* J1 T- E9 J' ]' K9 Q) y$ B, w; d
当然效率会比编好的程序低一点,不过一个小工具,问题不大。
) b$ A2 y! R8 G8 ~3 j" h具体就是建立一个.bat文件,依次输入:
$ {9 X5 D  }# M, [
& m: {- F( a+ \) l4 n) \convert BRU_DESKBOOK_OVL' u5 g6 T* D! W; `
convert BRU_DESKEYE_OVL
7 A( k0 `: N, ]% sconvert BRU_EYEGRIDOPEN01_OVL
$ a+ U4 w2 c/ h8 X' ]8 S' Gconvert BRU_EYEGRIDOPEN02_OVL
1 a9 @: b. {( f+ i7 D5 a……: u1 r. }& {/ j+ r- y: L
……
3 `9 Q( R: ^% y" P& Z: [9 W1 U& l0 v/ u8 b/ m# Q! e2 D. S, }
就行了,当然,几百张图片不可能手输,几行代码就可以搞定了,附件包里增加一个convert17.bat7 |% ]& D/ o$ \# _
就是ND17所有图片文件的批处理文件。/ x$ t+ M; }+ m
使用方法就是把convert17.bat和convert.exe还有解包后的那一堆文件放在一起,运行.bat文件就行了。9 k6 o6 ^( o. m4 f* l# B' p
# S! B( w& @( D( m1 a% `
ok,下一步开始制作逆转换工具3 ]" d0 `8 A% v+ |
————————————————————————————————————————————
! B5 J. w! j' S09.09.19更新) L: B* w" j4 `7 ^
终于熬到双休日了,真是痛苦的一周╮(╯_╰)╭+ _' p* b1 }/ r4 A$ G3 G# R" R% R
0 G6 g( ~  F$ I% c* X5 J5 _
首先,对上面文件格式分析的一个勘误,并非所有24位图像的文件头都是31个字节8 |& Q# R/ t+ t& F* u
也有一部分的文件头是18个字节,具体什么情况出现31个字节文件头尚不清楚,可以知道的是31个字节文件头中含有字串“Contains”,辨别文件头有几个字节可以直接 文件size-宽*高*3  计算而得
) |' u* i$ _" F1 S) p- |* r3 j$ v# ^3 d
其次,更新逆转换工具' L0 `( K; P1 R8 R8 t$ D
使用方法:将工具和转换后的bmp图像,正转换过程中生成的.pic文件(就是cif文件解压缩所得,用来提取文件头)放在一起,命令提示符下输入convertback FILENAME即可,FILENAME无需后缀名,例如像转换工具一样只需输入convertback BRU_DESKBOOK_OVL即可
) C3 r" x, ^" g+ w: \3 O1 I/ y3 b$ T; F' o9 Z
因为之前加入lzss代码出现了例如不能重复运行等种种问题,所以逆转换工具暂时不添加lzss压缩的代码。就是说转换后的还是pic文件(FILENAMEnew.pic),需要另外运行南希lzss解压缩工具nancylzss.exe。
7 r3 F' H2 T8 O具体使用时还是可以用bat文件来达到批量操作。$ ^0 [0 S9 I5 k9 E& Y) \+ _
& E' {& z" x/ l* ?. U$ s
图片汉化流程:
  `8 l+ G) u; }; b5 X% v& l& q% @
1、用convert17.bat转换所有图片文件$ n4 W8 `; M; K6 ^1 c" o+ I  {
2、查看所有图片,找出、PS需要修改的图片3 W8 i! O  Z& N6 a
3、建立一个convertback.bat,依次输入需要转换的图片,例如:
- E& k& C% z4 f   convert BRU_DESKBOOK_OVL" |8 w1 p$ a1 d; b9 P! R
      nancylzss e BRU_DESKBOOK_OVLnew.pic BRU_DESKBOOK_OVLnew
5 F* w6 ^. B( I2 x      convert BRU_DESKEYE_OVL1 `$ Q" Q$ p7 J4 m% a9 k
      nancylzss e BRU_DESKEYE_OVLnew.pic BRU_DESKEYE_OVLnew & d! }9 V9 h( B  z0 z+ H5 \
      ……4 `- i- T7 J  Q* R+ q! m
   ……
2 T8 Y  s$ w+ }( H& m5 P4、运行该bat文件,逆转换% H- p9 U% L* c
4 g: [, Q% p3 \% `, O. `4 u
附件包里添加逆转换工具convertback.exe,压缩解压缩工具nancylzss.exe
9 f+ Y$ y0 I1 A9 z2 Q. m
, J6 i( E+ ]3 I! s* G  gok,下一步进行关键的图片文本导入测试~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2009-9-15 22:31 | 只看该作者
收到,太感谢了。等我有时间了慢慢看。
回复 支持 反对

使用道具 举报

板凳
发表于 2009-9-15 22:36 | 只看该作者
对了,文本部分的导入试验有时间的话请继续。
1 A+ ^* o# l5 g- g5 P: h这样又能多2个可汉化游戏。
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2009-9-16 18:06 | 只看该作者
09.09.16更新
回复 支持 反对

使用道具 举报

5#
发表于 2009-9-16 20:35 | 只看该作者
生成bat文件,是个不错的方法。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2009-9-20 00:54 | 只看该作者
09.09.19更新
回复 支持 反对

使用道具 举报

7#
发表于 2009-9-20 08:18 | 只看该作者
进展不错啊!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表