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

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

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

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

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

ND16、17图片转换工具

先挖个坑,慢慢填8 z  h6 @8 U2 y% y7 G# z

: e/ Z; @  c, F2 I计划包含两个工具
' S$ {$ H- F7 \, u& B. Z7 \其一,cif文件——解压缩——转换成bmp图8 J" s& p, Q: r. S
其二,bmp图——逆转换——压缩成cif文件
  j# w0 q# S' j2 C8 w" L) i
+ s) `2 \0 H$ S第一个应该要实现批量转换,就是读取Ciftree.dat头部文件表,然后将所有图片文件解压缩,转换
- P6 O& h2 K% d, V! i: K- t第二个只需要单张处理就行了,毕竟相对于原来的大量图片,需要PS的只是很少的部分: m! l, I$ S( r" F/ d/ {% X" q

* n' G" ~( p6 i: U! ^  S+ s————————————————————————————————————————————
$ E6 {2 s2 l1 `! aND16、17图片文件格式详解:% Z7 }+ j1 {9 ~1 {  z
  J7 U* j' }* m" A. ]* L
首先判断是不是图片,可以在Ciftree.dat的头部文件表里文件名后14个字节的地方看看有没有数据,此处存放是图片宽高像素,各4个字节,基本上两个数据都不等于0就是图片了
3 T, X' R( ]! F" G" G
0 m4 w! r- F, {图片文件在lzss解压缩后数据结构是 文件头+bmp图像RGB数据! [9 I3 m, Z- x5 b' N

1 f; m0 a/ Q& l. t其中,图片有两种格式,一种是32位图像,一种是24位图像
7 ~- c( S# @* n) Q, |; P  ?2 @( w前者的文件头长度是18个字节,后者的文件头长度是31个字节(其中还有字串“Contains”)<—(有误,见下面更新)
& D, R+ ?! X: P) \( a* l! F
' ]- o2 N: }# M8 ~+ J/ c/ P具体判断方式是 宽像素*高像素*4和文件大小比较
% O3 @& D$ Q! B8 l如果是32位图像,则文件大小比上述计算所得值大18个字节
' N* M# H% B; y如果是24位图像,则文件大小比上述计算值小,应该是等于 宽*高*3+310 d/ C  N) ]# P: z8 @5 {, ]% ?

4 y" N6 p7 M  Z6 M. i2 l文件头之后就是图片的RGB数据,32位图像是4个字节表示一个像素,而24位图像是3个字节表示一个像素,这也就是为什么上面要乘3、4的原因。3 M! M2 R4 j4 R4 h7 V8 d' c# S. |
+ r5 C# R4 x4 a3 w# ?9 D# n4 T
转换工作,32位图像很简单,去掉那18个字节的文件头,然后填上32位BMP图像的文件头就可以了,BMP图像文件头数据比较简单,网上资料很多,这里就不详述了。0 n) e% r# h( Y4 |6 ]) ~3 f) S! B
9 Q8 I/ W( p% G2 ]( G& C
24位图像转换要稍微麻烦点,因为24位bmp图片在显示时,如果每一行字节数不是4的倍数,就需要补足字节,举个例子,39*33的图片,每行的字节数是39*3=117,不是4的倍数,因此每一行都要补3个字节。同时文件大小和RGB数据大小也改变了,在写文件头的时候也要注意。. t% {/ ]) i% |& e, X$ J

% N1 g, P3 o* m需要注意的是,存放的RGB数据是逆向的,如果直接复制,转换出来的图片就是倒着的,所以要先读取最后一行的RGB数据,然后从后往前读,最后输出的才是正向的图片。0 P/ v: _, s9 l3 e( L3 b$ z

  @* J* d$ K; h% W: W  w- u6 j( v3 [( H& Q
至于逆转换,就是上面说的那些倒过来做一遍,不多说了。" e& C' s: N# B3 Z: v/ q* M- N5 j
# P+ T1 }$ @, o: O8 u/ q$ c
——————————————————————————————————————————
( w7 e; [/ i0 ^9 l' w以上是理论部分,至于实践部分,目前完成了单张图片的正向转换工具3 i6 Z6 h' b6 a
  P4 Q: i' g% {% V
使用方法:5 H& R9 ]1 a5 o7 H4 @) d, A
    把待转换的文件和head文件和工具放在一起,命令提示符下convert filename,程序就会自动找出head里对应的文件,读取宽高像素,解压缩,转换。
: v# v- u6 v0 v/ \9 }# a
0 _# [3 d+ |# ?7 |& j附件包里包括了工具、head文件、一个待转换文件、一个我写完命令的bat文件,有兴趣的童鞋可以下下来解压,直接运行那个.bat,如果正常的话,你可以在目录下找到一个lzss解压缩后的文件和一张转换完成的图片。
( r% y- s$ {+ j% u, w& j: K4 B* F0 E8 `, e
——————————————————————————————————————————# V+ o# r; M, Y( q6 h! D6 G$ f
, a0 p4 G; I& h7 L& e6 E' k2 ?
其实呢,本来批量转换的代码都写好了,但是由于原来的lzss解压工具无法重复运行,批量转换工具暂时难产了。7 x2 C& [% `7 |: A& ~2 E+ `+ z
就是说我将那解压缩代码添到工具里后,重复执行解压缩程序后,只有第一次能正常解压,后来解压缩出来的文件数据都是错掉的。  P9 O" A, D) i2 Z/ {& `/ i
" K5 a+ N1 q, P# b2 y8 [7 V: Z
最简单的如下代码也只有file1能够正常解压,file3解压出来的数据有错误. E, j. D# m2 q! s- J+ G; V
main(){
6 R% b9 `0 O' x, Olzss(2,file1,file2);   //  2代表解压,前一个文件是源文件,后者是解压后生成文件
1 w6 k9 q6 \' Vlzss(2,file3,file4);6 y) i' ]1 @, G
}1 k. m5 |# E2 [# u
7 L- t/ f: k( j7 }2 J' C9 v
可能是我添代码的时候出了问题,也可能是原来解压程序的代码有问题,运行完部分数据没有初始化。正在研究中....." X" F# r6 S, ^6 T# W# a

9 F! o; e- ]. S9 G未完待续....
3 d  K' A0 X+ h. F! c1 D——————————————————————————————————————————
1 u# t) }- p2 z09.09.16更新
: I( f3 J6 b+ _, O- S( W; v
: D) q# O: D+ k6 N昨晚睡觉时突然想到,批量转换其实也可以用批处理.bat文件完成,这样就不需要再编程了( E) [3 D0 I/ w7 S7 d' @7 r) w
当然效率会比编好的程序低一点,不过一个小工具,问题不大。* r" \& ^' d$ y5 e6 P' `+ E$ j
具体就是建立一个.bat文件,依次输入:
& y2 l7 c+ {6 w0 E' O5 u" B8 f" J8 F6 {1 Z) V$ }% `& c
convert BRU_DESKBOOK_OVL  C7 H  z) X$ i4 x+ m
convert BRU_DESKEYE_OVL. j) s+ d# s) T! @8 r6 A
convert BRU_EYEGRIDOPEN01_OVL3 E# O3 T( h3 K* l$ k' ]
convert BRU_EYEGRIDOPEN02_OVL3 w" q( j* T; _) J$ K
……
8 I# ?' _' W# Y- t! S; W……
( W9 w1 q4 w0 B3 D
5 F- o+ j1 n0 F- Z9 H. K" k就行了,当然,几百张图片不可能手输,几行代码就可以搞定了,附件包里增加一个convert17.bat
' z9 V+ V+ a9 C% n% M就是ND17所有图片文件的批处理文件。6 o2 s. p6 l& R& G
使用方法就是把convert17.bat和convert.exe还有解包后的那一堆文件放在一起,运行.bat文件就行了。' V% S  f$ V) Q2 w' Z; n

" g7 [- t9 q6 _  {: F$ T  wok,下一步开始制作逆转换工具
9 w- f( s# Y1 X, f————————————————————————————————————————————( Z/ M5 h: D4 r: t3 v
09.09.19更新
8 J0 u, B+ C1 d6 A终于熬到双休日了,真是痛苦的一周╮(╯_╰)╭0 B9 q) N+ ~- Y' y3 p( ~6 {& r% H
2 ~$ Q) }9 j0 Q3 u8 A
首先,对上面文件格式分析的一个勘误,并非所有24位图像的文件头都是31个字节
) t9 B; p. }2 k: d/ ]也有一部分的文件头是18个字节,具体什么情况出现31个字节文件头尚不清楚,可以知道的是31个字节文件头中含有字串“Contains”,辨别文件头有几个字节可以直接 文件size-宽*高*3  计算而得' R$ w$ r' ~$ C+ n& R& Q
' `. k. {/ |; ]9 r
其次,更新逆转换工具# U- ^5 B& |$ ^7 ]) c% M! ~
使用方法:将工具和转换后的bmp图像,正转换过程中生成的.pic文件(就是cif文件解压缩所得,用来提取文件头)放在一起,命令提示符下输入convertback FILENAME即可,FILENAME无需后缀名,例如像转换工具一样只需输入convertback BRU_DESKBOOK_OVL即可
3 z8 W* H$ O$ [0 O: w. C# `! L5 r7 W$ q8 P3 {0 y! P
因为之前加入lzss代码出现了例如不能重复运行等种种问题,所以逆转换工具暂时不添加lzss压缩的代码。就是说转换后的还是pic文件(FILENAMEnew.pic),需要另外运行南希lzss解压缩工具nancylzss.exe。6 y# W. B. B; Z. o  I
具体使用时还是可以用bat文件来达到批量操作。
5 u1 \- _! u, L, g8 c
3 g. g* a- t  |+ J: J& A图片汉化流程:
7 f0 R$ ?9 s$ ]* \5 P, a# Z5 F7 K" F/ j! p
1、用convert17.bat转换所有图片文件
1 Z8 F# O% U8 P! N6 ]2、查看所有图片,找出、PS需要修改的图片& |8 |+ n2 u! P8 [3 _# ^. O' x
3、建立一个convertback.bat,依次输入需要转换的图片,例如:
, Y- g+ G% w( Y) i$ {   convert BRU_DESKBOOK_OVL
( e2 j1 ^% H; ?      nancylzss e BRU_DESKBOOK_OVLnew.pic BRU_DESKBOOK_OVLnew
# Z5 e$ X- u4 y: y+ t% n      convert BRU_DESKEYE_OVL
$ |' b' i: |  O6 y6 W4 Q      nancylzss e BRU_DESKEYE_OVLnew.pic BRU_DESKEYE_OVLnew
4 s. G- {; {4 Y, K      ……
! K  Y# u2 w6 M# |, t* L8 c  W   ……
& f( k1 Z  F9 l4 \3 Z4、运行该bat文件,逆转换" u/ C+ B! g4 X  L

% M5 v- t% C4 L: X' H, g附件包里添加逆转换工具convertback.exe,压缩解压缩工具nancylzss.exe# s1 {8 J/ o' S  f& p

2 n: Y$ E3 Y+ Q# v* t1 Iok,下一步进行关键的图片文本导入测试~

本帖子中包含更多资源

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

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

使用道具 举报

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

使用道具 举报

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

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