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

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

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

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

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

ND16、17图片转换工具

先挖个坑,慢慢填: V% T* ]; k2 {0 B4 t
1 M. {7 S6 N  ]5 U, k( T# E
计划包含两个工具- A5 L% C9 R* V  L
其一,cif文件——解压缩——转换成bmp图
5 g. ~; i9 H& l4 D1 G; y* S其二,bmp图——逆转换——压缩成cif文件& n! R0 G4 `, k9 E7 o/ z& I
7 q5 v# L  X3 E+ z* y1 ~) l
第一个应该要实现批量转换,就是读取Ciftree.dat头部文件表,然后将所有图片文件解压缩,转换% f+ y5 o7 _! m/ Z+ G5 f, t3 i
第二个只需要单张处理就行了,毕竟相对于原来的大量图片,需要PS的只是很少的部分
* v$ e0 C; A8 y
1 Z5 M; }3 _9 R8 r& K————————————————————————————————————————————; q/ W+ B; L/ R7 `. T' A, v0 c& X
ND16、17图片文件格式详解:
* b: f/ b  Q( y+ K, l% L
% f  V% J* a/ @$ Y  ?4 b, N$ `首先判断是不是图片,可以在Ciftree.dat的头部文件表里文件名后14个字节的地方看看有没有数据,此处存放是图片宽高像素,各4个字节,基本上两个数据都不等于0就是图片了
# M3 J  Z+ f2 v9 s$ I- d
8 T2 ]) j7 ]1 F; J* l- |' t) h, y图片文件在lzss解压缩后数据结构是 文件头+bmp图像RGB数据. d# J1 M  h3 o  y0 A2 B& L  z

6 U' w* ^6 ~+ p, @$ |) ]; P其中,图片有两种格式,一种是32位图像,一种是24位图像1 }/ M3 B$ n0 N4 ^
前者的文件头长度是18个字节,后者的文件头长度是31个字节(其中还有字串“Contains”)<—(有误,见下面更新)
) p+ B* s8 \* }# Q0 I3 N; C; t" d9 R# ?' V. R+ g
具体判断方式是 宽像素*高像素*4和文件大小比较5 y! m) a' ?  _& |: c# k: G
如果是32位图像,则文件大小比上述计算所得值大18个字节" x1 d5 J' ]$ c+ @& L+ S) W
如果是24位图像,则文件大小比上述计算值小,应该是等于 宽*高*3+31, q$ m  a9 ~2 H) Q4 Z" l
0 e7 {+ k% O( \! |
文件头之后就是图片的RGB数据,32位图像是4个字节表示一个像素,而24位图像是3个字节表示一个像素,这也就是为什么上面要乘3、4的原因。: I; c% ]" h7 _" M( f! A, a

6 b- H5 h$ i$ r+ `$ g& K转换工作,32位图像很简单,去掉那18个字节的文件头,然后填上32位BMP图像的文件头就可以了,BMP图像文件头数据比较简单,网上资料很多,这里就不详述了。
2 R% T) H; m; s* E  W: Q% K
8 g3 Y: ^3 {! l3 n4 |2 k24位图像转换要稍微麻烦点,因为24位bmp图片在显示时,如果每一行字节数不是4的倍数,就需要补足字节,举个例子,39*33的图片,每行的字节数是39*3=117,不是4的倍数,因此每一行都要补3个字节。同时文件大小和RGB数据大小也改变了,在写文件头的时候也要注意。: D) C" h& j: X7 I; X/ F8 g  @: S

! E! g6 U2 m' v9 o  }需要注意的是,存放的RGB数据是逆向的,如果直接复制,转换出来的图片就是倒着的,所以要先读取最后一行的RGB数据,然后从后往前读,最后输出的才是正向的图片。7 L4 G$ z& s/ s

  n7 @' ^4 F  L1 M6 a+ r, |2 Y3 J1 [( ^) e" R3 s8 O% o
至于逆转换,就是上面说的那些倒过来做一遍,不多说了。( I& `6 ^' b6 M$ d

8 Z. s/ t6 C5 V. S( |: W——————————————————————————————————————————
9 s! y" m) }9 [' t1 K' }, r) ?$ R# B以上是理论部分,至于实践部分,目前完成了单张图片的正向转换工具$ P0 |) Z+ ]' G$ {8 U
) T  R5 j+ k. L
使用方法:
' K2 b) k, }1 u! n8 r2 H% ]9 _: e    把待转换的文件和head文件和工具放在一起,命令提示符下convert filename,程序就会自动找出head里对应的文件,读取宽高像素,解压缩,转换。
4 i1 _1 c, f/ Z2 w  G# B! _! u
2 B4 b4 V4 t: {) u' v附件包里包括了工具、head文件、一个待转换文件、一个我写完命令的bat文件,有兴趣的童鞋可以下下来解压,直接运行那个.bat,如果正常的话,你可以在目录下找到一个lzss解压缩后的文件和一张转换完成的图片。
4 }' m, Z3 m: `% x* P4 T- A2 ^) g7 U6 D/ J2 _. N
——————————————————————————————————————————8 B  u, S) p8 Z, q

4 k. j$ c7 G9 a- v! u. |' }3 n其实呢,本来批量转换的代码都写好了,但是由于原来的lzss解压工具无法重复运行,批量转换工具暂时难产了。
9 `1 u6 i' g2 M( y( w( u就是说我将那解压缩代码添到工具里后,重复执行解压缩程序后,只有第一次能正常解压,后来解压缩出来的文件数据都是错掉的。
! R' e8 {2 ^4 G6 B& G& x3 y2 O" \! ?9 d* `
最简单的如下代码也只有file1能够正常解压,file3解压出来的数据有错误
: q! r7 }7 N) gmain(){7 W( r2 i! g! l9 R
lzss(2,file1,file2);   //  2代表解压,前一个文件是源文件,后者是解压后生成文件  M- R& T" d/ g) J8 _
lzss(2,file3,file4);5 B) L/ S5 K& V$ J3 a9 m5 t% }
}$ [! f5 _) w$ _* B
! R$ S& B" X: C$ e+ c1 B% y
可能是我添代码的时候出了问题,也可能是原来解压程序的代码有问题,运行完部分数据没有初始化。正在研究中.....
' O: ]% Z% I4 ^- `6 P# |8 N5 O9 S
2 l2 u4 r2 w: c0 S# q未完待续....
. O5 X- F8 n4 h5 Q# s+ u; @/ k* @——————————————————————————————————————————5 j) R! }6 Z. u# a+ m
09.09.16更新
' r' g; g& i8 Q% J" Y' z; p' [7 M3 U2 J  C" c5 F
昨晚睡觉时突然想到,批量转换其实也可以用批处理.bat文件完成,这样就不需要再编程了, x2 ?4 m- t, j
当然效率会比编好的程序低一点,不过一个小工具,问题不大。' N# w" J. ^5 E. A3 g) V! k
具体就是建立一个.bat文件,依次输入:
. i- k: o) {1 i0 n/ C0 ~$ h
7 Q' G: Z% Q6 [3 rconvert BRU_DESKBOOK_OVL& ~& l( g$ e  {) `+ l
convert BRU_DESKEYE_OVL
) ^) g! ~. F, ?" j# p$ a, H# G: L' ?convert BRU_EYEGRIDOPEN01_OVL
  A$ N3 j7 B/ d. ]( p8 H  ?4 tconvert BRU_EYEGRIDOPEN02_OVL
5 {) U( W5 K/ c4 {  K+ H1 A……  J; ?" d" p( o5 M+ I
……' ^# |# P0 j( a

/ C( x0 i, G1 B& ^就行了,当然,几百张图片不可能手输,几行代码就可以搞定了,附件包里增加一个convert17.bat6 J4 Q7 X7 D; ]6 _) D7 J& r
就是ND17所有图片文件的批处理文件。0 ]* @) `& g% P, N- L' J
使用方法就是把convert17.bat和convert.exe还有解包后的那一堆文件放在一起,运行.bat文件就行了。
  k# ]& A+ r0 F& Z" {- A6 ]( ]3 R8 Z, A7 Y! g0 R4 f
ok,下一步开始制作逆转换工具7 }8 f) V% J" y2 ?
————————————————————————————————————————————
5 i, R: |7 I( L09.09.19更新
# A- |, q9 D: _! @终于熬到双休日了,真是痛苦的一周╮(╯_╰)╭& f9 Y9 l$ W' ^0 z

8 q* e& S5 T# a首先,对上面文件格式分析的一个勘误,并非所有24位图像的文件头都是31个字节
" c$ c+ }4 }. O. s9 u也有一部分的文件头是18个字节,具体什么情况出现31个字节文件头尚不清楚,可以知道的是31个字节文件头中含有字串“Contains”,辨别文件头有几个字节可以直接 文件size-宽*高*3  计算而得
& T$ Y& R2 E5 n/ Q3 Y
* E4 D- O  [# F* p* @+ T9 H4 e1 Q' t其次,更新逆转换工具7 x+ ]* M: P" W! v  Q$ u7 d) h! h: ?
使用方法:将工具和转换后的bmp图像,正转换过程中生成的.pic文件(就是cif文件解压缩所得,用来提取文件头)放在一起,命令提示符下输入convertback FILENAME即可,FILENAME无需后缀名,例如像转换工具一样只需输入convertback BRU_DESKBOOK_OVL即可
5 E. t) S) `! B* X, f9 [1 C; f" M
4 G( `- b  G/ z0 s" k% w* p+ w因为之前加入lzss代码出现了例如不能重复运行等种种问题,所以逆转换工具暂时不添加lzss压缩的代码。就是说转换后的还是pic文件(FILENAMEnew.pic),需要另外运行南希lzss解压缩工具nancylzss.exe。+ r4 w6 S3 ?1 ?  n
具体使用时还是可以用bat文件来达到批量操作。
+ R% @" [" A2 S9 A% o( ]) j" X9 T1 L) B2 O1 F0 e
图片汉化流程:
0 s% b' a- i' O7 W: q5 |2 ?+ ?7 q! z0 w: u
1、用convert17.bat转换所有图片文件
2 V7 ?3 L. G# b9 n; f- q  q/ ?2、查看所有图片,找出、PS需要修改的图片- T4 L( B. y+ J' G4 H6 M
3、建立一个convertback.bat,依次输入需要转换的图片,例如:
5 K& h1 a% B  G% X8 I   convert BRU_DESKBOOK_OVL7 m2 Q% E4 b# @0 C- V6 i
      nancylzss e BRU_DESKBOOK_OVLnew.pic BRU_DESKBOOK_OVLnew
+ D$ Z8 q- r% f0 A      convert BRU_DESKEYE_OVL
8 \' T5 M" F1 l- ]# p4 S0 x      nancylzss e BRU_DESKEYE_OVLnew.pic BRU_DESKEYE_OVLnew
' s$ S8 w) t* G! A  F      ……
% Z* N* f1 \9 Y5 \) g* x8 Z# |% m   ……
- X3 u0 f! w: \- v4、运行该bat文件,逆转换9 n' f+ r% d( ^& Y5 q5 K
* H7 J/ c9 R2 g, d) Z! r6 \# ^
附件包里添加逆转换工具convertback.exe,压缩解压缩工具nancylzss.exe
4 R8 {3 n2 G: V# ]+ v' c
. y3 G& z% ^5 k% b, m4 h# Mok,下一步进行关键的图片文本导入测试~

本帖子中包含更多资源

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

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

使用道具 举报

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

使用道具 举报

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

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