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

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

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

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

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

ND16、17图片转换工具

先挖个坑,慢慢填
: _( g( Q$ P5 o1 H  ~! n
0 B! P5 \5 I1 k' @计划包含两个工具
- O% g  [- }1 E. A$ ~- L其一,cif文件——解压缩——转换成bmp图5 t. R. A6 z0 e& Q
其二,bmp图——逆转换——压缩成cif文件* s9 C8 J  g$ m
( v$ i: D7 s( g7 ?
第一个应该要实现批量转换,就是读取Ciftree.dat头部文件表,然后将所有图片文件解压缩,转换( |3 I8 |- J. Z4 V2 y% }( L
第二个只需要单张处理就行了,毕竟相对于原来的大量图片,需要PS的只是很少的部分
1 ^6 k; z" \4 \* q3 }: l7 P% v% C
————————————————————————————————————————————
0 t' X( s5 @, R+ j& M4 W* N! AND16、17图片文件格式详解:
% V* f# G" x$ T
: u6 r; l3 F+ d4 t9 F首先判断是不是图片,可以在Ciftree.dat的头部文件表里文件名后14个字节的地方看看有没有数据,此处存放是图片宽高像素,各4个字节,基本上两个数据都不等于0就是图片了
  k7 ~- Y$ i8 ]' y3 h3 R* M  S& h  p* A$ m  `' d3 g/ A* {5 G% o
图片文件在lzss解压缩后数据结构是 文件头+bmp图像RGB数据7 `: _. m0 c& L. O; B8 s2 J

2 [) h/ n1 R0 s. ]7 T7 X% O其中,图片有两种格式,一种是32位图像,一种是24位图像. u5 U2 j1 c7 k% C; ]
前者的文件头长度是18个字节,后者的文件头长度是31个字节(其中还有字串“Contains”)<—(有误,见下面更新). S6 {& H/ P8 c
- k6 f, j9 F/ e
具体判断方式是 宽像素*高像素*4和文件大小比较
8 S$ f9 ^0 G# f如果是32位图像,则文件大小比上述计算所得值大18个字节. t% g" q' w7 ?9 @; @* t
如果是24位图像,则文件大小比上述计算值小,应该是等于 宽*高*3+31( d# t# I3 E5 L* [, ^
6 V  [2 w) r# g. {
文件头之后就是图片的RGB数据,32位图像是4个字节表示一个像素,而24位图像是3个字节表示一个像素,这也就是为什么上面要乘3、4的原因。0 U8 t+ v1 ]& c0 u" j6 N
% a" ~% n7 I6 w- I4 O. e
转换工作,32位图像很简单,去掉那18个字节的文件头,然后填上32位BMP图像的文件头就可以了,BMP图像文件头数据比较简单,网上资料很多,这里就不详述了。; h. N: g# H9 u6 `6 G

1 X* @7 T4 K- B# j& ~- Y( W% `6 J24位图像转换要稍微麻烦点,因为24位bmp图片在显示时,如果每一行字节数不是4的倍数,就需要补足字节,举个例子,39*33的图片,每行的字节数是39*3=117,不是4的倍数,因此每一行都要补3个字节。同时文件大小和RGB数据大小也改变了,在写文件头的时候也要注意。: J6 a% i& \! a3 \2 r

% @7 {$ }' y; p' z" j# f/ f5 T需要注意的是,存放的RGB数据是逆向的,如果直接复制,转换出来的图片就是倒着的,所以要先读取最后一行的RGB数据,然后从后往前读,最后输出的才是正向的图片。& n0 Y1 `, c: c
  w* ^" y! k3 x/ N

& c% |% v% S; [4 l* @# X至于逆转换,就是上面说的那些倒过来做一遍,不多说了。7 u. s) c% n" v' L( e; ~
* t/ R) S0 G, c
——————————————————————————————————————————$ {/ z$ j8 Q9 m& Q! {& T* ?
以上是理论部分,至于实践部分,目前完成了单张图片的正向转换工具
! }( F) `: \/ d: M, U% j+ s3 W9 J# t! q6 E% R5 I& Y
使用方法:
/ E3 `* l7 I0 r6 r5 j, k    把待转换的文件和head文件和工具放在一起,命令提示符下convert filename,程序就会自动找出head里对应的文件,读取宽高像素,解压缩,转换。
6 }- [" F* {  m4 P/ }& ^2 T  h4 M% _$ t- ?
附件包里包括了工具、head文件、一个待转换文件、一个我写完命令的bat文件,有兴趣的童鞋可以下下来解压,直接运行那个.bat,如果正常的话,你可以在目录下找到一个lzss解压缩后的文件和一张转换完成的图片。" b+ d# [+ h* W2 n4 {  i8 g
: D( U8 R0 _% M9 V; R* {
——————————————————————————————————————————
6 s* m  R1 t$ ]
3 G$ X# a% P* v2 D$ x+ u其实呢,本来批量转换的代码都写好了,但是由于原来的lzss解压工具无法重复运行,批量转换工具暂时难产了。
7 }& n/ X4 n0 C3 e4 a9 n; ^就是说我将那解压缩代码添到工具里后,重复执行解压缩程序后,只有第一次能正常解压,后来解压缩出来的文件数据都是错掉的。- `* p% G! ?; r) d' H" Q; ]+ {! z

6 y/ }4 [( |. z7 O7 ]) p" K9 F: j最简单的如下代码也只有file1能够正常解压,file3解压出来的数据有错误
" t- v6 ?9 e  z1 h- Xmain(){
2 h7 L. _1 V; L( B) t: z/ a' R" ]lzss(2,file1,file2);   //  2代表解压,前一个文件是源文件,后者是解压后生成文件
/ k9 U5 ^7 r( X1 ^2 s7 a! O# A" C- hlzss(2,file3,file4);% p+ O. m2 O* B
}# Y2 z" p3 d" r
5 {& o4 u3 z4 M/ [' X/ N9 V
可能是我添代码的时候出了问题,也可能是原来解压程序的代码有问题,运行完部分数据没有初始化。正在研究中.....8 K8 D+ P% Y- D6 [8 [& z5 ?* x+ V
& S) e: W- n& B! @4 u* `" e
未完待续....
6 ^& b/ j" O, X5 G+ M——————————————————————————————————————————# A" L0 q% ]' _, i; ]
09.09.16更新" _, x6 F' y) D) I
! J% x2 x. X& s: `- K
昨晚睡觉时突然想到,批量转换其实也可以用批处理.bat文件完成,这样就不需要再编程了
3 o$ E2 k) k% J: E当然效率会比编好的程序低一点,不过一个小工具,问题不大。
. z- G* m6 R1 X: Z! H) p0 t" H具体就是建立一个.bat文件,依次输入:
2 y, f$ O2 ~. e( `" l$ J* m7 K4 a) ?3 }  m. ~
convert BRU_DESKBOOK_OVL
+ q6 h' C' C7 bconvert BRU_DESKEYE_OVL
2 A0 {  s* x3 T0 w" econvert BRU_EYEGRIDOPEN01_OVL
: O. h2 Q9 @( z" Sconvert BRU_EYEGRIDOPEN02_OVL, r2 K) v- g$ p2 ^: r: B; C2 @
……
3 s9 r) \( ?6 ?2 v' l……" J( q- k2 ], p7 \+ {! Z5 ^

1 V3 u- a' ?/ N就行了,当然,几百张图片不可能手输,几行代码就可以搞定了,附件包里增加一个convert17.bat5 K$ {& x) e# Y( l  z' u, D8 v1 t
就是ND17所有图片文件的批处理文件。7 W  ]- W, ]1 B; k$ x4 q" d% Q( _
使用方法就是把convert17.bat和convert.exe还有解包后的那一堆文件放在一起,运行.bat文件就行了。  r6 R& M6 j5 k3 u

  u% i1 Q! c* v+ Vok,下一步开始制作逆转换工具
  D5 d. F: U# p5 a1 v4 r% ?————————————————————————————————————————————( T$ i5 x4 b; R3 K  o$ H
09.09.19更新7 r( [! B( a% V& G2 ~7 k  j
终于熬到双休日了,真是痛苦的一周╮(╯_╰)╭
; _( Q5 ?( P. ^3 j7 }8 I. P& Q5 O
' ~; g/ {2 y' F4 w0 C+ L! J$ k$ A; i首先,对上面文件格式分析的一个勘误,并非所有24位图像的文件头都是31个字节9 c( c! G- X: L, b0 s$ ?
也有一部分的文件头是18个字节,具体什么情况出现31个字节文件头尚不清楚,可以知道的是31个字节文件头中含有字串“Contains”,辨别文件头有几个字节可以直接 文件size-宽*高*3  计算而得; P3 Q  x; }9 m( o4 [+ B* n

4 R) G; O2 X7 g4 W; S( I, g$ r其次,更新逆转换工具9 K' W# L6 v' P  F9 F+ p) y
使用方法:将工具和转换后的bmp图像,正转换过程中生成的.pic文件(就是cif文件解压缩所得,用来提取文件头)放在一起,命令提示符下输入convertback FILENAME即可,FILENAME无需后缀名,例如像转换工具一样只需输入convertback BRU_DESKBOOK_OVL即可
. X4 [$ ?6 ?  X+ a$ Q7 s! P7 L8 p; E3 U
因为之前加入lzss代码出现了例如不能重复运行等种种问题,所以逆转换工具暂时不添加lzss压缩的代码。就是说转换后的还是pic文件(FILENAMEnew.pic),需要另外运行南希lzss解压缩工具nancylzss.exe。
; R  D2 P5 D" ]; @7 y5 c% I具体使用时还是可以用bat文件来达到批量操作。
0 b2 T3 {' c8 }# B6 i7 m, q# Z& C/ ~: |% M' k$ h
图片汉化流程:1 b5 l9 M  g9 n4 K$ w
' }2 C0 M2 k! y8 h, y7 [
1、用convert17.bat转换所有图片文件
: g# h# {. x7 H+ M! E7 W2、查看所有图片,找出、PS需要修改的图片
7 G0 H) k2 e2 h3、建立一个convertback.bat,依次输入需要转换的图片,例如:
" q! s9 S3 P) B, u# y: z" p+ A   convert BRU_DESKBOOK_OVL
# Z0 G* m5 W/ _" X5 k$ J0 W6 q      nancylzss e BRU_DESKBOOK_OVLnew.pic BRU_DESKBOOK_OVLnew 0 e5 i3 r5 s7 g) S" k+ N
      convert BRU_DESKEYE_OVL" v# T9 Y2 q4 O% u- D- {
      nancylzss e BRU_DESKEYE_OVLnew.pic BRU_DESKEYE_OVLnew 9 q, K* z0 p: D+ M; y' ]3 \( p# w
      ……
% ]5 J  i0 F, M3 u+ P( s& C   ……
, H7 U0 |3 k( L* |4、运行该bat文件,逆转换' l7 @, m* _1 ?2 R! w
4 r  N* H, w7 D) E
附件包里添加逆转换工具convertback.exe,压缩解压缩工具nancylzss.exe
0 x' ?9 v3 Y# {' P+ X" f/ @& Q
* {' i  c4 a' C  Q5 Dok,下一步进行关键的图片文本导入测试~

本帖子中包含更多资源

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

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

板凳
发表于 2009-9-15 22:36 | 只看该作者
对了,文本部分的导入试验有时间的话请继续。
" e  ?+ l+ d5 J# Q这样又能多2个可汉化游戏。
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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