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

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

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

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

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

ND16、17图片转换工具

先挖个坑,慢慢填  o- C1 T, W( Z. k! u; r9 A. {; H# k
, O! B( S' R( s4 |) l: _% @( C
计划包含两个工具
; p2 c- u. F0 o其一,cif文件——解压缩——转换成bmp图
" q: O/ v+ H/ R9 _! l, m$ s3 o" i其二,bmp图——逆转换——压缩成cif文件, A/ B; h. K, u6 y$ l

/ A8 P' ?6 l" D+ i- B- \* [9 A第一个应该要实现批量转换,就是读取Ciftree.dat头部文件表,然后将所有图片文件解压缩,转换
' _8 D$ L3 W" ]" h5 I第二个只需要单张处理就行了,毕竟相对于原来的大量图片,需要PS的只是很少的部分
. _3 _) b" F. f5 K) _
2 _0 A& b7 r9 {+ W9 t————————————————————————————————————————————
$ p2 ~) i+ O5 y' [ND16、17图片文件格式详解:5 C+ @2 v; `: x! I

! P- r/ f9 v' b首先判断是不是图片,可以在Ciftree.dat的头部文件表里文件名后14个字节的地方看看有没有数据,此处存放是图片宽高像素,各4个字节,基本上两个数据都不等于0就是图片了
+ R; T. s- _3 w# |% @9 t
& J3 ?3 ?  ^* {! |5 u图片文件在lzss解压缩后数据结构是 文件头+bmp图像RGB数据
' |+ n4 e4 b# v3 ?- `
* L5 p" w. g8 K2 |; L9 W/ U其中,图片有两种格式,一种是32位图像,一种是24位图像$ y( x+ M+ z; N) t5 y! L
前者的文件头长度是18个字节,后者的文件头长度是31个字节(其中还有字串“Contains”)<—(有误,见下面更新)
7 C* [0 L8 X9 o# w' `( w# L: {- e) Q- V' @- \5 O; a9 O' b8 o$ Q
具体判断方式是 宽像素*高像素*4和文件大小比较
8 Q* ?6 i. K# L3 P% ~% R+ }8 a如果是32位图像,则文件大小比上述计算所得值大18个字节' `( O9 H  g  M- X- c: }6 @4 \  {' q7 G
如果是24位图像,则文件大小比上述计算值小,应该是等于 宽*高*3+317 e9 |0 E" R3 \( L

+ l) y7 X4 n7 M( T9 @: {文件头之后就是图片的RGB数据,32位图像是4个字节表示一个像素,而24位图像是3个字节表示一个像素,这也就是为什么上面要乘3、4的原因。
$ F, b' o6 U' \3 q8 e
: F5 }; D: T, o9 u9 e  w& v转换工作,32位图像很简单,去掉那18个字节的文件头,然后填上32位BMP图像的文件头就可以了,BMP图像文件头数据比较简单,网上资料很多,这里就不详述了。2 [8 v4 ]6 f. w8 ^: h# H2 v
% H5 S; v/ l/ i" x5 v( o
24位图像转换要稍微麻烦点,因为24位bmp图片在显示时,如果每一行字节数不是4的倍数,就需要补足字节,举个例子,39*33的图片,每行的字节数是39*3=117,不是4的倍数,因此每一行都要补3个字节。同时文件大小和RGB数据大小也改变了,在写文件头的时候也要注意。1 c+ g% O' C7 s" Q3 A2 c2 b9 t6 w) z
, E, P; @" Z  f
需要注意的是,存放的RGB数据是逆向的,如果直接复制,转换出来的图片就是倒着的,所以要先读取最后一行的RGB数据,然后从后往前读,最后输出的才是正向的图片。
& K' h& A; Y! I2 A
0 f) w6 R  Q* y- s
# g8 N7 `5 Q9 V. j, Y至于逆转换,就是上面说的那些倒过来做一遍,不多说了。" |* ~+ Y# L1 `% N- K  O
% Y6 v8 V$ }9 h( j: w( J
——————————————————————————————————————————
$ i9 b6 k. Z. m3 p) x/ q2 o: M6 n以上是理论部分,至于实践部分,目前完成了单张图片的正向转换工具8 S0 w" I$ t- v4 p
- W8 f0 }6 m& P
使用方法:3 @( Q& `' m4 f. l
    把待转换的文件和head文件和工具放在一起,命令提示符下convert filename,程序就会自动找出head里对应的文件,读取宽高像素,解压缩,转换。1 U% I5 v3 c8 S
: u4 A) {1 [3 S) N6 O
附件包里包括了工具、head文件、一个待转换文件、一个我写完命令的bat文件,有兴趣的童鞋可以下下来解压,直接运行那个.bat,如果正常的话,你可以在目录下找到一个lzss解压缩后的文件和一张转换完成的图片。
0 C* i: m. q; J# K1 A, T9 a
3 V8 r6 v7 c/ e% P——————————————————————————————————————————
/ l9 m7 M0 Z5 l# T% B+ u( e& [' \' e4 R" Z2 v7 _  j
其实呢,本来批量转换的代码都写好了,但是由于原来的lzss解压工具无法重复运行,批量转换工具暂时难产了。' }2 o8 V, m5 k1 j+ H% Q$ i
就是说我将那解压缩代码添到工具里后,重复执行解压缩程序后,只有第一次能正常解压,后来解压缩出来的文件数据都是错掉的。
& W6 X- V& N( d8 D
" j4 O( Z  |! p) S. ]最简单的如下代码也只有file1能够正常解压,file3解压出来的数据有错误
6 G: d; S, e& `) `$ n! Y) I9 M% jmain(){
; D. u) R. U: h. n! Nlzss(2,file1,file2);   //  2代表解压,前一个文件是源文件,后者是解压后生成文件4 M  y% [3 e2 S: n
lzss(2,file3,file4);1 E9 U! r2 F& e0 M) q+ o
}7 I4 t, ^  ^- N

  X- O8 ]+ H( V& p$ V可能是我添代码的时候出了问题,也可能是原来解压程序的代码有问题,运行完部分数据没有初始化。正在研究中.....
" K' I, H8 ?8 l1 w: h# ^
3 D+ c' v* O; z% B+ U' K未完待续....
1 n: R  }' j' w7 [! K) @- }——————————————————————————————————————————5 E% m) K8 R4 F" N. E  U& [
09.09.16更新4 O4 \0 E' x7 D6 j

6 `; f; w: S7 F* N- V昨晚睡觉时突然想到,批量转换其实也可以用批处理.bat文件完成,这样就不需要再编程了9 G: K+ O1 B8 }5 g# r7 i- `) f7 p1 y
当然效率会比编好的程序低一点,不过一个小工具,问题不大。
- f" K$ c6 {3 X具体就是建立一个.bat文件,依次输入:
6 V  ?$ Y: B# g& G( m3 y; S. J, z# H$ c  t3 i
convert BRU_DESKBOOK_OVL7 E* u: M4 ~! q
convert BRU_DESKEYE_OVL( t0 p; z2 ?4 i9 ?6 ]- O0 F8 W- o
convert BRU_EYEGRIDOPEN01_OVL+ f" b7 X* Z5 p: p
convert BRU_EYEGRIDOPEN02_OVL: y! u+ P& N0 J" _/ ]
……
9 o* H0 m6 [0 @8 P9 {& d$ f……
3 g7 u4 y& O. k+ \2 j! u& Q- C
. C) [" B* E  }9 T1 X/ S5 {0 b就行了,当然,几百张图片不可能手输,几行代码就可以搞定了,附件包里增加一个convert17.bat
3 A4 F' l! m1 E6 [; ~, i7 z: z0 F就是ND17所有图片文件的批处理文件。
) x! G- @: U& T5 p/ b/ G1 E使用方法就是把convert17.bat和convert.exe还有解包后的那一堆文件放在一起,运行.bat文件就行了。) `4 v& w" Q& y( m

# \7 T- O' E/ l4 @: @ok,下一步开始制作逆转换工具# @% k6 N' Q; \8 K& J
————————————————————————————————————————————" ~5 _$ O+ m+ W: _# b0 Z
09.09.19更新. h$ ]! Z1 g: j; L; G- ~- ]7 D( R* I
终于熬到双休日了,真是痛苦的一周╮(╯_╰)╭
+ l2 B0 G  G) b; W. r
/ Y; S* m5 _6 j+ q4 b首先,对上面文件格式分析的一个勘误,并非所有24位图像的文件头都是31个字节
* `  Q* Q# h1 ^也有一部分的文件头是18个字节,具体什么情况出现31个字节文件头尚不清楚,可以知道的是31个字节文件头中含有字串“Contains”,辨别文件头有几个字节可以直接 文件size-宽*高*3  计算而得
/ i( o* C- \$ ~" X
! i# ~4 k5 @9 T5 r) m其次,更新逆转换工具5 C0 A8 l/ b! v
使用方法:将工具和转换后的bmp图像,正转换过程中生成的.pic文件(就是cif文件解压缩所得,用来提取文件头)放在一起,命令提示符下输入convertback FILENAME即可,FILENAME无需后缀名,例如像转换工具一样只需输入convertback BRU_DESKBOOK_OVL即可
7 ~) l3 I  D) n2 s) K8 D: x
) Y0 u4 O5 B/ m. ^; W' @因为之前加入lzss代码出现了例如不能重复运行等种种问题,所以逆转换工具暂时不添加lzss压缩的代码。就是说转换后的还是pic文件(FILENAMEnew.pic),需要另外运行南希lzss解压缩工具nancylzss.exe。" B6 C! @2 c" z2 k( c" `
具体使用时还是可以用bat文件来达到批量操作。
: C$ V( h8 s) y* {7 Q2 E
* d  j; H/ v- b: }0 K  D图片汉化流程:
- C/ ^" {* [: d3 ?4 L1 V
) V: G6 j* O  T6 K1、用convert17.bat转换所有图片文件
: U/ ^8 b9 z, L% Z4 O2、查看所有图片,找出、PS需要修改的图片, ?. W+ S( ?- d
3、建立一个convertback.bat,依次输入需要转换的图片,例如:
/ f2 j1 @: M0 x+ |& U   convert BRU_DESKBOOK_OVL9 d3 s4 j* T) l
      nancylzss e BRU_DESKBOOK_OVLnew.pic BRU_DESKBOOK_OVLnew
! x3 O5 K- Q! g& F  Y" S      convert BRU_DESKEYE_OVL% Q" n0 o2 A/ J! V5 F
      nancylzss e BRU_DESKEYE_OVLnew.pic BRU_DESKEYE_OVLnew
& `8 p  G) S" A' B' n      ……
3 V" o, _0 F9 n   ……2 q" q9 A% j- D* s- Z) c" o
4、运行该bat文件,逆转换& k6 v; S% G: i( q: V
3 \( }9 |7 G1 B# B/ ^- I# {; ~
附件包里添加逆转换工具convertback.exe,压缩解压缩工具nancylzss.exe
1 B" }  |- d" Z! w
: K: D5 e  ?7 s- E% }9 Bok,下一步进行关键的图片文本导入测试~

本帖子中包含更多资源

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

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

使用道具 举报

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

使用道具 举报

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

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