版权申明:http://yarin.iteye.com/blog/453262
在开发游戏时,总是要使用很多的资源文件,比如:图片、音乐等。而我们经常会遇到一些商业游戏中都看不到这些资源文件,那是因为商业游戏,一般都会将这些资源文件打包成二进制的文件,然后在程序中读取,并使用。这样的游戏看上去更显得专业一些,本文我们就来学习一个最简单的将资源文件打包成二进制文件的方法——使用BinCompiler将资源文件打包成二进制文件。
所需工具:BinCompiler(见附件)
运行“BinCompiler.exe”,指定要打包的资源文件的路径,和输出二进制文件的路径,如下图所示。
点击create按钮,即在我们制定的位置产生一个bin文件,当然在这个bin文件所在目录还会产生一个index.txt文件。我们在程序中读取这些资源时,需要使用这个index.txt。index.txt文件如下所示:
FName Index Pos Size
A_04.png 0 0 4141
A_03.png 1 4145 3802
A_02.png 2 7951 3813
A_01.png 3 11768 3959
接下来我们可以使用BinReader.java文件中的两个方法来读取这些资源文件了。
代码清单:BinReader.java
/*******************************************************************************
* Reads a file from the BIN file and return data as a byte buffer
*******************************************************************************/
public byte[] readFile(String binfile, int pos)
{
byte buffer[];
int len;
try {
InputStream is = Class.getClass().getResourceAsStream("/" + binfile);
is.skip(pos);
len = (is.read() & 0xFF) << 24;
len |= (is.read() 0xFF) << 16;
len |= (is.read() & 0xFF) << 8;
len |= (is.read() & 0xFF);
buffer = new byte[len];
is.read(buffer, 0, buffer.length);
is.close();
is = null;
System.gc();
} catch (Exception e) {
buffer = null;
e.printStackTrace();
System.gc();
return null;
}
return buffer;
}
/*******************************************************************************
* Reads a file from the BIN file and return data as an Image
*******************************************************************************/
public Image readImage(String binfile, long pos)
{
byte buffer[];
long len;
try {
InputStream is = Class.getClass().getResourceAsStream("/" + binfile);
is.skip(pos);
len = (is.read() & 0xFF) << 24;
len |= (is.read() 0xFF) << 16;
len |= (is.read() & 0xFF) << 8;
len |= (is.read() & 0xFF);
buffer = new byte[len];
is.read(buffer, 0, buffer.length);
is.close();
is = null;
System.gc();
} catch (Exception e) {
buffer = null;
e.printStackTrace();
System.gc();
return null;
}
return Image.createImage(buffer, 0, buffer.length);
}
可以看出,这两个方法都只需要传入bin文件名和图片对应的pos,pos值就在我们上面所说的index.txt文件中去找对应的就可以了。
例如我们读取一个图片
Image image = readimage("images.bin", 0);
可以看出,我们传入的pos的值是0,对应index.txt中就应该是A_04.png。
很简单,可以直接使用就是了。谢谢大家支持。
- 大小: 54.9 KB
分享到:
相关推荐
把纯文本文件转化成二进制文件存储到一个.c文件里 .c文件的数组里是二进制的内容
通过该工具可以将bin文件转化为二进制数组。用途:需要将一个bin文件转化为二进制数组,并用于程序中,这个工具可以起到作用。比如简单的离线下载器的制作验证、IAP的实现等等。
c#读取二进制文件c#读取二进制文件c#读取二进制文件c#读取二进制文件c#读取二进制文件c#读取二进制文件
读取文件中的二进制文件并将二进制转换成文本文档并输出
本Demo是基于VS2010的c++的实现文件转二进制,二进制转文件工程。代码中是通过png图片作为文件,同理可用于有其他类型的文件。
文本字符串与byte[], 整个物理文件与byte[], 物理文件内容与byte[], stream与byty[] 之间的相互转换。 从磁盘读取文件,将文件写入磁盘。
把文件资源打包进MFC的exe文件中,运行时进行加载,然后读取文件中的文本内容或者二进制内容 内含应用例程:1.把一个对象存为二进制文件,加载文件后恢复原对象 2.生成文本,加载资源中的文本文件,获取文本中的字符...
这个软件,可以把keil生成的文件转换为二进制文件 ,真的可以。
将二进制文件打包成 PNG 图像的工具。 用户可以加载bundle.wp文件并提取由原始文件路径索引的数据。 文件夹中的文件root/img/logo.png可以通过以下方式访问bundle.read("img/logo.png") == Uint8Array 辅助方法允许...
自己写的关于将二进制文件转换为十六进制并显示的小工具,也可以保存为文本文件。
读取二进制文件读取二进制文件读取二进制文件读取二进制文件读取二进制文件读取二进制文件读取二进制文件
将文件转为二进制,可将二进制转为文件。二进制与文件流相互转换
文件下载,二进制流转换成文件 解决中文名乱码的问题
将内容为十六进制的文本文件转换成二进制内容的bin文件
将任意文件、图片、二进制文件转换成C语言数组,绿色免安装
Java调用MATLAB,将文件转换为二进制流,http://blog.csdn.net/GSH_Hello_World/article/details/78524897
将文件以二进制流的格式写入数据库:首先获得文件路径,然后将文件以二进制读出保存在一个二进制数组中具体请祥看本文,希望对你有所帮助
二进制文件srcfile 转换成文本文件 targetfile,16进制显示。 二进制文件srcfile 转换文本文件 targetfile,16进制显示。 二进制文件转换文本文件 targetfile,16进制显示。 二进制文件转换文本文件,16进制显示...
主要介绍了JavaScript读二进制文件并用ajax传输二进制流的方法的相关资料,需要的朋友可以参考下