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

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

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

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

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

ND16、17图片转换工具

先挖个坑,慢慢填
# F0 L- S# _, B. U! u9 z' r6 `% ^1 U8 p5 o9 z
计划包含两个工具& [( t6 ^6 W* h- f& ?
其一,cif文件——解压缩——转换成bmp图+ ~3 S  b# P3 k* ^2 o; n
其二,bmp图——逆转换——压缩成cif文件
+ L9 f- z  c: \# B# M" M% o8 J* F
第一个应该要实现批量转换,就是读取Ciftree.dat头部文件表,然后将所有图片文件解压缩,转换% g) Z3 E1 u/ t* C4 g' N9 h9 H
第二个只需要单张处理就行了,毕竟相对于原来的大量图片,需要PS的只是很少的部分# R3 M( w( _1 e* m% U

' q) p4 x/ c" b0 o: q1 W————————————————————————————————————————————4 H7 B! @7 s4 q4 w2 p) o
ND16、17图片文件格式详解:5 m: p$ j' z( Y5 `5 n; f7 A0 I* ^

& ~. F5 ^: V- V4 K, h7 H首先判断是不是图片,可以在Ciftree.dat的头部文件表里文件名后14个字节的地方看看有没有数据,此处存放是图片宽高像素,各4个字节,基本上两个数据都不等于0就是图片了& C; |2 b5 M& j2 R& g/ s

& R3 j6 w! y# r! s9 H图片文件在lzss解压缩后数据结构是 文件头+bmp图像RGB数据
3 F* \) |3 T" b( |; L6 y' O0 Y
其中,图片有两种格式,一种是32位图像,一种是24位图像; A! B6 f; K5 t3 \3 Z
前者的文件头长度是18个字节,后者的文件头长度是31个字节(其中还有字串“Contains”)<—(有误,见下面更新)1 O7 ^% L3 T1 q+ M7 J9 t

9 y; K3 z  b5 F' F1 r, Q0 a1 Z具体判断方式是 宽像素*高像素*4和文件大小比较
) N( S6 P0 k. o3 m+ e如果是32位图像,则文件大小比上述计算所得值大18个字节
* T' P2 ]1 J5 k2 @如果是24位图像,则文件大小比上述计算值小,应该是等于 宽*高*3+31) s8 [4 T+ L0 X' H% ~

$ x, X  Z/ h9 D0 \  y文件头之后就是图片的RGB数据,32位图像是4个字节表示一个像素,而24位图像是3个字节表示一个像素,这也就是为什么上面要乘3、4的原因。; C3 O: f  c- r8 g, g1 Z

2 `5 E: E8 T$ B# q( }% k转换工作,32位图像很简单,去掉那18个字节的文件头,然后填上32位BMP图像的文件头就可以了,BMP图像文件头数据比较简单,网上资料很多,这里就不详述了。' l3 d2 l3 _$ u1 S# e
) v! w" R7 b; u, w
24位图像转换要稍微麻烦点,因为24位bmp图片在显示时,如果每一行字节数不是4的倍数,就需要补足字节,举个例子,39*33的图片,每行的字节数是39*3=117,不是4的倍数,因此每一行都要补3个字节。同时文件大小和RGB数据大小也改变了,在写文件头的时候也要注意。* Y7 G. b# |% T( B  d
; K, P5 g4 T) S/ ~, ~$ C
需要注意的是,存放的RGB数据是逆向的,如果直接复制,转换出来的图片就是倒着的,所以要先读取最后一行的RGB数据,然后从后往前读,最后输出的才是正向的图片。
! j7 }8 y( }6 v! ^  [9 [( Z6 d
/ W& Q  ?* [5 y' \) ]% o  T
* t( x7 U  Q0 q$ `  v, a  T至于逆转换,就是上面说的那些倒过来做一遍,不多说了。* G) l/ S: M! m% c/ t4 e

  {9 B; N, b& B9 Y1 }——————————————————————————————————————————
5 C3 M& L& D" v0 `. l3 D以上是理论部分,至于实践部分,目前完成了单张图片的正向转换工具
" G, V# X" u# K( N- z& U: R. ?& c% e. E4 f4 y# Z: w
使用方法:5 M! b! @! [6 ^3 d3 h
    把待转换的文件和head文件和工具放在一起,命令提示符下convert filename,程序就会自动找出head里对应的文件,读取宽高像素,解压缩,转换。9 p5 P7 X! Q0 I. X

# w' ], G. n: Q7 R: {5 G; W附件包里包括了工具、head文件、一个待转换文件、一个我写完命令的bat文件,有兴趣的童鞋可以下下来解压,直接运行那个.bat,如果正常的话,你可以在目录下找到一个lzss解压缩后的文件和一张转换完成的图片。
* V6 D) t, Q4 H% w8 M6 y. k# k+ ^- f4 @# B% `) c5 u
——————————————————————————————————————————% S2 p) ~/ B& o4 E$ Q

. \: p: b1 f1 l其实呢,本来批量转换的代码都写好了,但是由于原来的lzss解压工具无法重复运行,批量转换工具暂时难产了。4 k8 N8 N7 @5 w1 G# k+ h0 ~
就是说我将那解压缩代码添到工具里后,重复执行解压缩程序后,只有第一次能正常解压,后来解压缩出来的文件数据都是错掉的。
# x2 V! Z0 d# j8 p- g  q: Q! F1 A: V' T& y# X- g+ B" Y
最简单的如下代码也只有file1能够正常解压,file3解压出来的数据有错误
7 C5 \6 F+ F/ n( _main(){5 v6 O( y1 v" c$ B$ w  n* O2 E
lzss(2,file1,file2);   //  2代表解压,前一个文件是源文件,后者是解压后生成文件
- i& H& `$ _  U6 M5 |lzss(2,file3,file4);
0 G% O" I/ D$ N( X/ H: ~# V( i5 A}8 t/ ]  u+ @" X. p  ~! B

8 u. M$ ^+ t! x# q8 m2 _/ D可能是我添代码的时候出了问题,也可能是原来解压程序的代码有问题,运行完部分数据没有初始化。正在研究中.....0 d( L' d5 A, O

& b9 |' k, ?- U# D未完待续....
6 }' {7 P2 x9 G, F# q2 `1 `7 s——————————————————————————————————————————
$ B( t0 j! s# m; `9 B$ Y09.09.16更新
7 M5 ]* y5 l8 K2 K! D
: t  [5 T. B9 Y% _0 w昨晚睡觉时突然想到,批量转换其实也可以用批处理.bat文件完成,这样就不需要再编程了
2 W; i/ Q4 c$ `1 T! c* I$ T当然效率会比编好的程序低一点,不过一个小工具,问题不大。
* I  K- L( y. ^+ Y1 a具体就是建立一个.bat文件,依次输入:
" p6 E" T3 [) f& M% g  ^: T6 a2 Q4 \0 }) w) U7 ^  O) U, r  x0 E
convert BRU_DESKBOOK_OVL
: u7 y* U) D0 C6 k, a+ P9 m1 B& Mconvert BRU_DESKEYE_OVL
$ l8 P6 s) U9 r3 wconvert BRU_EYEGRIDOPEN01_OVL$ {! j4 i' H+ V* `5 f9 J' Y
convert BRU_EYEGRIDOPEN02_OVL
1 f* t9 M) E0 n2 ?4 F……
  D+ C1 @0 F* k, }& e8 _( F……
: G  Z; ^) o- O" c- `# L0 g
/ ~3 Z  D5 k; J; w4 R1 A就行了,当然,几百张图片不可能手输,几行代码就可以搞定了,附件包里增加一个convert17.bat* X" h8 i+ J* C: e! T
就是ND17所有图片文件的批处理文件。0 n3 J/ h) \( d7 y4 J& v' C
使用方法就是把convert17.bat和convert.exe还有解包后的那一堆文件放在一起,运行.bat文件就行了。
* |6 x) l1 H* u6 }) e1 |( S$ Z, w& O8 ]+ |- `' {. l/ p. j. W
ok,下一步开始制作逆转换工具
$ a' p3 N5 I8 w8 f, f0 g————————————————————————————————————————————. s* i6 \) R( G4 H, A
09.09.19更新$ ~2 u. I% n# u# ?
终于熬到双休日了,真是痛苦的一周╮(╯_╰)╭
+ r7 S, F2 i  t% H( b& p1 P4 @) l  W5 w) o# H) p
首先,对上面文件格式分析的一个勘误,并非所有24位图像的文件头都是31个字节
7 |# i2 G% p8 w- x3 c也有一部分的文件头是18个字节,具体什么情况出现31个字节文件头尚不清楚,可以知道的是31个字节文件头中含有字串“Contains”,辨别文件头有几个字节可以直接 文件size-宽*高*3  计算而得
2 |& N; {+ r5 o* W3 n
6 R6 ^" r/ J/ E" o! a) i) l其次,更新逆转换工具6 y6 T" d1 a9 b# K# W* G7 N, u. ~
使用方法:将工具和转换后的bmp图像,正转换过程中生成的.pic文件(就是cif文件解压缩所得,用来提取文件头)放在一起,命令提示符下输入convertback FILENAME即可,FILENAME无需后缀名,例如像转换工具一样只需输入convertback BRU_DESKBOOK_OVL即可/ m0 I% k+ z" s* n3 H1 E. t2 C9 Z# [

+ r: S9 P8 W8 T  f: J$ x因为之前加入lzss代码出现了例如不能重复运行等种种问题,所以逆转换工具暂时不添加lzss压缩的代码。就是说转换后的还是pic文件(FILENAMEnew.pic),需要另外运行南希lzss解压缩工具nancylzss.exe。6 f( _; {* }- b0 a' I3 i+ s
具体使用时还是可以用bat文件来达到批量操作。, V; S3 }4 d6 W" ]( [, _

, M) O+ C/ D8 ~6 i图片汉化流程:) Q% l" X& C0 v9 u( R

2 ^; M8 M& f& A" R3 V" |. Y9 u" `1、用convert17.bat转换所有图片文件
. E& R( B  [4 c. _0 |4 z8 {; X2、查看所有图片,找出、PS需要修改的图片: C0 H8 c) H4 L, v. O: Z3 `
3、建立一个convertback.bat,依次输入需要转换的图片,例如:
/ m5 Z0 Q' i+ w4 Y1 [0 |* t   convert BRU_DESKBOOK_OVL& K6 f$ u+ I' f6 c& b; ^. w3 A  J& J
      nancylzss e BRU_DESKBOOK_OVLnew.pic BRU_DESKBOOK_OVLnew ' }: L7 b& W, h1 ?) ~
      convert BRU_DESKEYE_OVL
, B2 h2 b+ ]1 _  k/ O, K      nancylzss e BRU_DESKEYE_OVLnew.pic BRU_DESKEYE_OVLnew . S$ J. j+ j' J' k. _2 N; X
      ……
9 Z$ }, c4 _; P) c  S. ~   ……! h2 E; c; m5 l0 o5 A
4、运行该bat文件,逆转换. R5 i2 u9 }  y' S; U

# |/ T# Z: `: o  O; P5 ]附件包里添加逆转换工具convertback.exe,压缩解压缩工具nancylzss.exe
. @6 |1 ?- o8 |3 n* N
! q" X% p* M7 G1 Y$ q9 D5 W/ eok,下一步进行关键的图片文本导入测试~

本帖子中包含更多资源

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

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

使用道具 举报

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

使用道具 举报

板凳
发表于 2009-9-15 22:36 | 只看该作者
对了,文本部分的导入试验有时间的话请继续。  B) x5 D, c6 K! x1 O7 W. G
这样又能多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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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