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

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

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

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

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

ND16、17图片转换工具

先挖个坑,慢慢填  e9 {$ F# u* x; A. d5 z  i

5 Y9 T1 V4 h4 q  l计划包含两个工具
8 ?6 e. s1 U, C* l  N其一,cif文件——解压缩——转换成bmp图* S! u' F1 J+ P7 ^
其二,bmp图——逆转换——压缩成cif文件# c/ g9 y4 |& a2 U

8 t7 T9 A% F$ P4 M第一个应该要实现批量转换,就是读取Ciftree.dat头部文件表,然后将所有图片文件解压缩,转换
: o8 {* o9 I1 e5 @' l第二个只需要单张处理就行了,毕竟相对于原来的大量图片,需要PS的只是很少的部分
; g% M3 a1 m6 \. Z- d6 v0 }5 {
- T% L- B% p* f: S7 [6 Y7 f7 {; A! h————————————————————————————————————————————$ }5 _6 j& d% y+ s3 S9 Y7 L' U
ND16、17图片文件格式详解:
1 F" z: o, }$ w) H& ^% S$ [/ k$ V7 T  |% S; S
首先判断是不是图片,可以在Ciftree.dat的头部文件表里文件名后14个字节的地方看看有没有数据,此处存放是图片宽高像素,各4个字节,基本上两个数据都不等于0就是图片了
' R4 l$ a0 l8 N6 m$ M5 L
" a) ~$ A6 Y% P% V. p3 y, B图片文件在lzss解压缩后数据结构是 文件头+bmp图像RGB数据
+ ~6 A3 G/ d' M( b6 O
3 }) m' R- K6 \# s' \其中,图片有两种格式,一种是32位图像,一种是24位图像
$ F8 K. o' ?' B* p: X+ p6 x& E前者的文件头长度是18个字节,后者的文件头长度是31个字节(其中还有字串“Contains”)<—(有误,见下面更新)
8 J" \' p9 r0 a
4 ~  R" |3 Y! S0 @0 ^具体判断方式是 宽像素*高像素*4和文件大小比较
( E/ [+ ]+ M2 T3 }" m如果是32位图像,则文件大小比上述计算所得值大18个字节" j6 {% f- W( B7 X( `
如果是24位图像,则文件大小比上述计算值小,应该是等于 宽*高*3+31$ v0 M4 b, l; @$ k' e+ }( w
* E, j/ E$ N; _+ h8 U
文件头之后就是图片的RGB数据,32位图像是4个字节表示一个像素,而24位图像是3个字节表示一个像素,这也就是为什么上面要乘3、4的原因。5 y- V# S2 V: [2 {
7 S: G% z, ~' H" ]2 u3 L" {& \
转换工作,32位图像很简单,去掉那18个字节的文件头,然后填上32位BMP图像的文件头就可以了,BMP图像文件头数据比较简单,网上资料很多,这里就不详述了。
* f8 B' a8 l: Y/ s* ~( \
" v$ Z( |; W2 d9 f! m) }2 D! M/ p24位图像转换要稍微麻烦点,因为24位bmp图片在显示时,如果每一行字节数不是4的倍数,就需要补足字节,举个例子,39*33的图片,每行的字节数是39*3=117,不是4的倍数,因此每一行都要补3个字节。同时文件大小和RGB数据大小也改变了,在写文件头的时候也要注意。
$ O% Z: J$ g3 \# j6 J) S9 ?6 H2 H
+ F) _! }1 r2 J! ?  B8 X% p需要注意的是,存放的RGB数据是逆向的,如果直接复制,转换出来的图片就是倒着的,所以要先读取最后一行的RGB数据,然后从后往前读,最后输出的才是正向的图片。8 }! g3 Q0 l5 W3 K% M- w6 E

3 N, Y8 t2 m; h) @- I! ]
& a. F4 V8 i/ \6 ?7 }; J至于逆转换,就是上面说的那些倒过来做一遍,不多说了。
/ V/ o) X# a" ^! G4 }( c9 I9 C# T& x" v
——————————————————————————————————————————
8 i$ i* W& [; K以上是理论部分,至于实践部分,目前完成了单张图片的正向转换工具
9 X0 A% u% [0 f8 ]% M9 O
! h  _$ p" m( `% S4 f& R使用方法:+ H5 n  V9 `; f7 c- _7 w6 p" J* G
    把待转换的文件和head文件和工具放在一起,命令提示符下convert filename,程序就会自动找出head里对应的文件,读取宽高像素,解压缩,转换。
1 v' z/ D  L8 A6 u8 M. A8 L3 k1 X/ H
* p4 j0 F7 g2 Y$ {& P9 s* S附件包里包括了工具、head文件、一个待转换文件、一个我写完命令的bat文件,有兴趣的童鞋可以下下来解压,直接运行那个.bat,如果正常的话,你可以在目录下找到一个lzss解压缩后的文件和一张转换完成的图片。
3 _6 {) i" P0 A; q5 E5 E8 G% P. }: S8 m
. {& i! C9 J. g$ s$ o——————————————————————————————————————————
) M; R6 G) t6 q% _# N0 v5 k  t& G  N4 F. p! Z/ f- }, L
其实呢,本来批量转换的代码都写好了,但是由于原来的lzss解压工具无法重复运行,批量转换工具暂时难产了。7 K* S5 U* T+ L
就是说我将那解压缩代码添到工具里后,重复执行解压缩程序后,只有第一次能正常解压,后来解压缩出来的文件数据都是错掉的。
) ?  s* K2 ?( z; _# M2 }, z+ |2 N1 B* W3 g' k
最简单的如下代码也只有file1能够正常解压,file3解压出来的数据有错误
1 B5 g7 S# {, b. `5 Gmain(){
, \" H5 q7 V. h& b% Plzss(2,file1,file2);   //  2代表解压,前一个文件是源文件,后者是解压后生成文件
8 |8 X4 o8 u! jlzss(2,file3,file4);5 T5 h( p2 b3 h: m9 v* }
}
& m$ N2 }6 O) P4 K  j' B' d# O5 O2 ~$ v& C- v# ^( T+ z
可能是我添代码的时候出了问题,也可能是原来解压程序的代码有问题,运行完部分数据没有初始化。正在研究中.....
$ @" E  P, Q' z$ {! u7 w9 I8 m: U* v: U0 F- \! c0 m
未完待续....
% _2 R4 N8 n# \- J7 ^——————————————————————————————————————————
; y5 _. u0 e1 T0 O, d+ D  e- A& \" x7 a09.09.16更新! q6 n/ C7 [, |' G* p: r$ M8 t* L( U
7 ]6 f- x: j2 B5 J, o
昨晚睡觉时突然想到,批量转换其实也可以用批处理.bat文件完成,这样就不需要再编程了5 z; U- N$ W, \0 R3 c- T
当然效率会比编好的程序低一点,不过一个小工具,问题不大。
, z" U: ~& P; d& I( Q具体就是建立一个.bat文件,依次输入:# w/ ~3 [. k0 `0 Q3 b8 ?
5 O2 j2 U; `: Q1 ^6 c! B; B
convert BRU_DESKBOOK_OVL
$ F1 ^( _5 w% {8 g, {3 ~0 y2 Econvert BRU_DESKEYE_OVL# G4 q5 I% r% i
convert BRU_EYEGRIDOPEN01_OVL3 [( o( `" R7 N5 M  l6 b" l' i
convert BRU_EYEGRIDOPEN02_OVL# u# K- g) p9 E4 h: {
……+ @) I" ~! J: M' `- U, d' j
……1 c0 A3 X) n* d' P& o% r7 `( {

, ~' I: k6 {9 y' S8 T7 e  c就行了,当然,几百张图片不可能手输,几行代码就可以搞定了,附件包里增加一个convert17.bat
! z+ F( R+ O0 E' t就是ND17所有图片文件的批处理文件。
  H( q; P1 a3 P+ Q7 g, M使用方法就是把convert17.bat和convert.exe还有解包后的那一堆文件放在一起,运行.bat文件就行了。& b; \0 s7 C9 Z
2 I/ J5 [7 b8 p, G
ok,下一步开始制作逆转换工具5 Z: m6 g/ J# A. c. k$ X
————————————————————————————————————————————
4 `( R6 E7 i9 l9 i- R+ b09.09.19更新# j: ]  h; _+ X
终于熬到双休日了,真是痛苦的一周╮(╯_╰)╭2 S4 ~+ r# S$ E2 e0 H8 ]: T' g
$ n$ p7 c- I$ c
首先,对上面文件格式分析的一个勘误,并非所有24位图像的文件头都是31个字节8 l% n& k. O: C& H( {$ g
也有一部分的文件头是18个字节,具体什么情况出现31个字节文件头尚不清楚,可以知道的是31个字节文件头中含有字串“Contains”,辨别文件头有几个字节可以直接 文件size-宽*高*3  计算而得
& ]4 Y7 y5 d2 Q! q. x4 m9 G( A5 e" e; ?( }& C& _; ?
其次,更新逆转换工具
+ x& r5 J9 d! Q* O, g使用方法:将工具和转换后的bmp图像,正转换过程中生成的.pic文件(就是cif文件解压缩所得,用来提取文件头)放在一起,命令提示符下输入convertback FILENAME即可,FILENAME无需后缀名,例如像转换工具一样只需输入convertback BRU_DESKBOOK_OVL即可
6 N: j/ ]4 g4 t
) F: f. R! N8 Y8 l因为之前加入lzss代码出现了例如不能重复运行等种种问题,所以逆转换工具暂时不添加lzss压缩的代码。就是说转换后的还是pic文件(FILENAMEnew.pic),需要另外运行南希lzss解压缩工具nancylzss.exe。
/ s$ R6 k' |2 E& B$ I- T具体使用时还是可以用bat文件来达到批量操作。
9 N' J+ i) p( a1 x' g6 }- }3 V# w5 r$ @2 c
图片汉化流程:, m- Y) L4 Y0 i! a

* i. X( \$ u0 Q1、用convert17.bat转换所有图片文件  O7 X2 P0 J4 g. o. ~9 x* _# x
2、查看所有图片,找出、PS需要修改的图片" j7 E) x8 T/ `1 {
3、建立一个convertback.bat,依次输入需要转换的图片,例如:$ ]8 [3 X& Z! N9 F% x" r
   convert BRU_DESKBOOK_OVL
$ Q8 t% _2 c; z. ~' h      nancylzss e BRU_DESKBOOK_OVLnew.pic BRU_DESKBOOK_OVLnew
  E) Y% Y0 O+ N3 _      convert BRU_DESKEYE_OVL+ m1 @& K  i4 b; ]) p" U. z
      nancylzss e BRU_DESKEYE_OVLnew.pic BRU_DESKEYE_OVLnew
6 y9 d* k+ J, G+ O6 k      ……
4 Q0 K4 q% c/ F# q0 A# t   ……9 ]/ ?+ h0 p, [5 ~
4、运行该bat文件,逆转换
8 p9 G! d! @0 q, c7 u1 A- t, B) m, X  B( @3 I& G7 y
附件包里添加逆转换工具convertback.exe,压缩解压缩工具nancylzss.exe; |* x" D2 P2 g- P
# C7 j2 H3 p  _; B/ i
ok,下一步进行关键的图片文本导入测试~

本帖子中包含更多资源

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

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

使用道具 举报

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

使用道具 举报

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

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