如何把图片资源转化成Bin文件

时间:2020-12-02 06:39:48
做J2me时,如何把图片声音等资源转化成Bin文件来记录呢??

谢谢。。。

9 个解决方案

#1


资源文件二进制打包???

这个有什么好疑问的。

#2


自己设标志位,读到标志位就载入相应的资源,自己写个玩玩呗,不难。

#3


关键是怎么做?用什么做啊?具体步骤呢?????

谢谢。。。

#4


就是流文件啊,把一个图片的字节全部写进去,然后写你的标志位,再写文件再写标志位,如此重复,读的时候字节辨认标志位确定下来的一段时什么文件,多长之类的,自己确定。

#5


import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;


public class FileManager {
    public static final String 工程路径="E:/eclipse/workspace/pupaClan_ImageToBin/src/";
    public void serachFiles(String dir){
     try{
        File root = new File(dir);

        File[] filesOrDirs = root.listFiles();

        String[] result = new String[100];

        for (int i = 0; i < filesOrDirs.length; i++){
            if (filesOrDirs[i].isDirectory()){
                serachFiles(filesOrDirs[i].getAbsolutePath());
            } else{
                result[i] = filesOrDirs[i].getName();
                //为PNG文件
                if(result[i].endsWith(".png")){
                        make_Bin(路径转化(filesOrDirs[i].getAbsolutePath().substring(工程路径.length())));
                }
                }
        }
     }catch(Exception e){
      e.printStackTrace();
     }

    }
    public String 路径转化(String from_Str){
     String Str = from_Str;
     String value="";
     int ch=0;
     while((ch=Str.indexOf("\\"))!=-1){
                value=value+Str.substring(0,ch)+"/";
     Str=Str.substring(ch+1,Str.length());
            }
     value=value+Str;
     return value;
    }
    public static void make_Bin(String str){
     try {
     System.out.println("str="+str);
DataInputStream dis=new DataInputStream(Class.forName("java.lang.Object").getResourceAsStream("/"+str));
FileOutputStream fout = new FileOutputStream(工程路径+str.substring(0,str.indexOf(".png"))+".bin");
    BufferedOutputStream bot = new BufferedOutputStream(fout);
        DataOutputStream dout = new DataOutputStream(bot);
        int ch;
        
        while((ch=dis.read())!=-1){
         dout.write(ch);
        }
        dout.flush();
        fout.close();
        dis.close();
} catch (Exception e) {
e.printStackTrace();
}
    }
    public static void main(String[] args){
        FileManager fm = new FileManager();
        fm.serachFiles("src/res");
    }


}
加载就根据流来创建图.知道了吧

#6


是J2ME哦

#7


写法都是类似的.也是读取图片资源,然后写出二进制文件,

#8


类似如下的:
void WriteModule(RandomAccessFile fo, PrintStream ft)
throws Exception
{
int i, n = anim.modules.size();
Module mod;
fo.writeShort(n);
for(i = 0; i < n; i++)
{
mod = (Module)anim.modules.get(i);
fo.writeByte(mod.x);
fo.writeByte(mod.y);
fo.writeByte(mod.w);
fo.writeByte(mod.h);
}
}

读的时候当然就是按你写进时的格式来读了。

#9


使用工具BinCompiler。百度搜下即可。

#1


资源文件二进制打包???

这个有什么好疑问的。

#2


自己设标志位,读到标志位就载入相应的资源,自己写个玩玩呗,不难。

#3


关键是怎么做?用什么做啊?具体步骤呢?????

谢谢。。。

#4


就是流文件啊,把一个图片的字节全部写进去,然后写你的标志位,再写文件再写标志位,如此重复,读的时候字节辨认标志位确定下来的一段时什么文件,多长之类的,自己确定。

#5


import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;


public class FileManager {
    public static final String 工程路径="E:/eclipse/workspace/pupaClan_ImageToBin/src/";
    public void serachFiles(String dir){
     try{
        File root = new File(dir);

        File[] filesOrDirs = root.listFiles();

        String[] result = new String[100];

        for (int i = 0; i < filesOrDirs.length; i++){
            if (filesOrDirs[i].isDirectory()){
                serachFiles(filesOrDirs[i].getAbsolutePath());
            } else{
                result[i] = filesOrDirs[i].getName();
                //为PNG文件
                if(result[i].endsWith(".png")){
                        make_Bin(路径转化(filesOrDirs[i].getAbsolutePath().substring(工程路径.length())));
                }
                }
        }
     }catch(Exception e){
      e.printStackTrace();
     }

    }
    public String 路径转化(String from_Str){
     String Str = from_Str;
     String value="";
     int ch=0;
     while((ch=Str.indexOf("\\"))!=-1){
                value=value+Str.substring(0,ch)+"/";
     Str=Str.substring(ch+1,Str.length());
            }
     value=value+Str;
     return value;
    }
    public static void make_Bin(String str){
     try {
     System.out.println("str="+str);
DataInputStream dis=new DataInputStream(Class.forName("java.lang.Object").getResourceAsStream("/"+str));
FileOutputStream fout = new FileOutputStream(工程路径+str.substring(0,str.indexOf(".png"))+".bin");
    BufferedOutputStream bot = new BufferedOutputStream(fout);
        DataOutputStream dout = new DataOutputStream(bot);
        int ch;
        
        while((ch=dis.read())!=-1){
         dout.write(ch);
        }
        dout.flush();
        fout.close();
        dis.close();
} catch (Exception e) {
e.printStackTrace();
}
    }
    public static void main(String[] args){
        FileManager fm = new FileManager();
        fm.serachFiles("src/res");
    }


}
加载就根据流来创建图.知道了吧

#6


是J2ME哦

#7


写法都是类似的.也是读取图片资源,然后写出二进制文件,

#8


类似如下的:
void WriteModule(RandomAccessFile fo, PrintStream ft)
throws Exception
{
int i, n = anim.modules.size();
Module mod;
fo.writeShort(n);
for(i = 0; i < n; i++)
{
mod = (Module)anim.modules.get(i);
fo.writeByte(mod.x);
fo.writeByte(mod.y);
fo.writeByte(mod.w);
fo.writeByte(mod.h);
}
}

读的时候当然就是按你写进时的格式来读了。

#9


使用工具BinCompiler。百度搜下即可。