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

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

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

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

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

ND16、17图片转换工具

先挖个坑,慢慢填
$ Y. e: H; f' m9 ~* ~+ K/ C; p. A1 ]1 q2 O8 T6 E1 G; L8 C/ i
计划包含两个工具
! a# p( h; ^- J8 I9 |2 t+ Z其一,cif文件——解压缩——转换成bmp图6 N/ `* @+ v  I, q' k, K) z8 ]( p
其二,bmp图——逆转换——压缩成cif文件4 F  v! ~/ j2 m% j  @
* F8 R/ m3 {" {- ?
第一个应该要实现批量转换,就是读取Ciftree.dat头部文件表,然后将所有图片文件解压缩,转换
4 e# w5 D: M% k3 q第二个只需要单张处理就行了,毕竟相对于原来的大量图片,需要PS的只是很少的部分
: `" j2 P( [7 ~2 l* @
8 @# ?! Y& C" ]1 s————————————————————————————————————————————$ K% y- Y. |) M; D) w
ND16、17图片文件格式详解:) v6 W) e# b0 E  i% `

9 l6 P( `% v" ?0 h( X3 A) W首先判断是不是图片,可以在Ciftree.dat的头部文件表里文件名后14个字节的地方看看有没有数据,此处存放是图片宽高像素,各4个字节,基本上两个数据都不等于0就是图片了0 C  b; H* L3 y9 G2 R" W

# I: o: H6 K5 A7 z图片文件在lzss解压缩后数据结构是 文件头+bmp图像RGB数据
' P4 `* V, \) Y6 c$ H! N" @
6 w3 `7 O, c2 z; T& G其中,图片有两种格式,一种是32位图像,一种是24位图像
, q( i0 q( U7 [前者的文件头长度是18个字节,后者的文件头长度是31个字节(其中还有字串“Contains”)<—(有误,见下面更新); K2 D2 O' ~" e. D, T4 P# g# |+ m2 o
4 S  {& U9 e. s3 G- m/ o
具体判断方式是 宽像素*高像素*4和文件大小比较, |+ h( _8 b8 {, C# R
如果是32位图像,则文件大小比上述计算所得值大18个字节0 o; h& t; Q. m& ^) E* i4 D4 n
如果是24位图像,则文件大小比上述计算值小,应该是等于 宽*高*3+31! I- P! j& u- ?7 ?- @) r
, E9 H. ?- l2 u; t/ x
文件头之后就是图片的RGB数据,32位图像是4个字节表示一个像素,而24位图像是3个字节表示一个像素,这也就是为什么上面要乘3、4的原因。
6 ^! N. f0 f: V+ V( A% \7 C# d2 R' G5 Y! x. Z: f3 s% z
转换工作,32位图像很简单,去掉那18个字节的文件头,然后填上32位BMP图像的文件头就可以了,BMP图像文件头数据比较简单,网上资料很多,这里就不详述了。4 U0 Q& t( z: B2 C) o3 F

3 Q2 _6 X7 t' `* k$ Z24位图像转换要稍微麻烦点,因为24位bmp图片在显示时,如果每一行字节数不是4的倍数,就需要补足字节,举个例子,39*33的图片,每行的字节数是39*3=117,不是4的倍数,因此每一行都要补3个字节。同时文件大小和RGB数据大小也改变了,在写文件头的时候也要注意。
2 F7 V6 |; E/ c9 Y, S3 O! p9 ]4 L9 u$ E# l' w8 c/ r% C) ?5 D
需要注意的是,存放的RGB数据是逆向的,如果直接复制,转换出来的图片就是倒着的,所以要先读取最后一行的RGB数据,然后从后往前读,最后输出的才是正向的图片。
5 S/ }& O" b. m6 y) M( p3 S" f+ i* h1 V- [/ {$ a7 B. e& N
5 L  S2 p2 H" r
至于逆转换,就是上面说的那些倒过来做一遍,不多说了。9 t% R8 E; c; W
8 ~, L, u- R, K6 @5 k0 Y! `( r
——————————————————————————————————————————
7 k8 X' D, E' ]* r. v, ?以上是理论部分,至于实践部分,目前完成了单张图片的正向转换工具$ m3 G1 U; E# h' P5 l' w

8 G  r) p$ q; a- a- q7 X使用方法:8 [8 Z9 F4 t( _1 N
    把待转换的文件和head文件和工具放在一起,命令提示符下convert filename,程序就会自动找出head里对应的文件,读取宽高像素,解压缩,转换。
; R$ {9 |+ W  ~2 _4 N
6 d+ }: V  b, L6 Y1 H附件包里包括了工具、head文件、一个待转换文件、一个我写完命令的bat文件,有兴趣的童鞋可以下下来解压,直接运行那个.bat,如果正常的话,你可以在目录下找到一个lzss解压缩后的文件和一张转换完成的图片。
5 J+ J: Q3 E6 q: S- Q+ k0 Y; B1 y8 r; i3 r  h
——————————————————————————————————————————( J) s: X7 B& B) Z' g2 v# r
. d# w1 H3 \! o: Q
其实呢,本来批量转换的代码都写好了,但是由于原来的lzss解压工具无法重复运行,批量转换工具暂时难产了。) S, a, u& J, `* Y
就是说我将那解压缩代码添到工具里后,重复执行解压缩程序后,只有第一次能正常解压,后来解压缩出来的文件数据都是错掉的。
$ }! G: S' `+ |3 H: m* g6 }) l
/ t1 S6 ^; |4 G* G' h# p% [' Z% c: s最简单的如下代码也只有file1能够正常解压,file3解压出来的数据有错误
5 e4 o/ a& l6 N  _" f  C' m2 Hmain(){
+ Q  _6 r. w) D! W$ i& t+ qlzss(2,file1,file2);   //  2代表解压,前一个文件是源文件,后者是解压后生成文件
3 Y! F5 g! ?0 _& z6 q: {- ]3 Jlzss(2,file3,file4);
6 `4 W, m& p' F8 m3 s8 _}) }) q8 Y3 C0 n/ B. i
1 {- O; E& A. h4 `# v0 C$ H
可能是我添代码的时候出了问题,也可能是原来解压程序的代码有问题,运行完部分数据没有初始化。正在研究中.....; c* [0 l# K# L3 j7 `5 I

% h& Z  ]* L$ A2 l% |未完待续....% j6 S$ P/ c) K- \
——————————————————————————————————————————
9 L% u, ^: p* Y# x& ~6 n0 ^( p! y09.09.16更新, r, E0 U+ T: K* _# o

4 J2 J4 r, z* g' }& ?+ e昨晚睡觉时突然想到,批量转换其实也可以用批处理.bat文件完成,这样就不需要再编程了
/ I, c7 R# K0 v" R1 f当然效率会比编好的程序低一点,不过一个小工具,问题不大。# L( G% u  [/ T/ S; f! `
具体就是建立一个.bat文件,依次输入:
: E1 Y& f) H- M+ F/ |4 S6 S, }: @
# o& M# {. e  t; \7 D$ B) `convert BRU_DESKBOOK_OVL* B; V. E8 h  s1 c( n8 g3 Q5 L
convert BRU_DESKEYE_OVL: n4 v) x. u3 F' q0 A
convert BRU_EYEGRIDOPEN01_OVL& H1 D& r8 F" f
convert BRU_EYEGRIDOPEN02_OVL7 U1 i2 v  G  B
……8 R6 q6 y, M! J- L$ ~
……
1 i. ^; C) o0 s, n8 Z) Z6 `6 C. I8 f! b8 |( F* y1 ?. E; Q
就行了,当然,几百张图片不可能手输,几行代码就可以搞定了,附件包里增加一个convert17.bat5 ^. q9 o$ e$ W# F$ q2 \% |
就是ND17所有图片文件的批处理文件。8 `" F7 }$ ]- O4 p4 f
使用方法就是把convert17.bat和convert.exe还有解包后的那一堆文件放在一起,运行.bat文件就行了。. `: e7 c+ M$ D0 O
1 m+ Y" I% e/ J* H% z
ok,下一步开始制作逆转换工具
8 ?7 J# e  ]$ |————————————————————————————————————————————* \' J8 ?) }& n: l6 x& S# K
09.09.19更新
- q5 e! t' w9 X6 U  R终于熬到双休日了,真是痛苦的一周╮(╯_╰)╭3 K' W* M2 ]3 v( U
& ?; G* o6 |0 q2 j' G4 a1 P
首先,对上面文件格式分析的一个勘误,并非所有24位图像的文件头都是31个字节- j: q! M5 h* k& |% O2 `
也有一部分的文件头是18个字节,具体什么情况出现31个字节文件头尚不清楚,可以知道的是31个字节文件头中含有字串“Contains”,辨别文件头有几个字节可以直接 文件size-宽*高*3  计算而得
5 i) K& K# m/ R
3 u# V% T" H$ K* c: n& @. M+ j其次,更新逆转换工具6 X+ ~5 ?/ u, p
使用方法:将工具和转换后的bmp图像,正转换过程中生成的.pic文件(就是cif文件解压缩所得,用来提取文件头)放在一起,命令提示符下输入convertback FILENAME即可,FILENAME无需后缀名,例如像转换工具一样只需输入convertback BRU_DESKBOOK_OVL即可
# i( i9 F. H* k7 j% U# C! P. T& R4 ?7 \1 e- ?( D
因为之前加入lzss代码出现了例如不能重复运行等种种问题,所以逆转换工具暂时不添加lzss压缩的代码。就是说转换后的还是pic文件(FILENAMEnew.pic),需要另外运行南希lzss解压缩工具nancylzss.exe。
, x! g, T% @! V- Y4 Q0 I具体使用时还是可以用bat文件来达到批量操作。" ?7 i/ o& o/ H
, R0 i8 u$ U6 R7 ^5 g
图片汉化流程:
5 u+ }* `' N2 L4 I" G0 U8 h. W
/ w5 q' ]% G5 R) I$ h1、用convert17.bat转换所有图片文件0 A/ T( p: W( p7 E4 W, v5 l
2、查看所有图片,找出、PS需要修改的图片
; A6 Q! G! F' w' t# D3、建立一个convertback.bat,依次输入需要转换的图片,例如:
* L+ ]  _$ J0 B# N: ?. [! k   convert BRU_DESKBOOK_OVL
+ M; n- s6 N. R9 g      nancylzss e BRU_DESKBOOK_OVLnew.pic BRU_DESKBOOK_OVLnew ( y; |- b7 L. M; ?
      convert BRU_DESKEYE_OVL! d. ?( i+ t# v
      nancylzss e BRU_DESKEYE_OVLnew.pic BRU_DESKEYE_OVLnew 8 h% @0 Q- B/ O  e  r% P9 l
      ……
1 w% Y8 [: M- S+ n" f, ^+ g) C   ……3 X, Z: S  Q) \) i, @
4、运行该bat文件,逆转换7 h& G0 ]9 U+ k; o' ^5 e$ q

/ z) o" k/ z" x, ]% O# S* M附件包里添加逆转换工具convertback.exe,压缩解压缩工具nancylzss.exe
7 [" k4 q* W" ?: A2 \% [4 O! ?; `/ r6 j- n! b
ok,下一步进行关键的图片文本导入测试~

本帖子中包含更多资源

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

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

使用道具 举报

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

使用道具 举报

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

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