我需要在1个图像画板上切换显示2个图像,当前只显示其中的一副图像。因为图像文件比较大,所以我希望能够先分别从图像文件里读出图像对象,然后将其序列化保存在在硬盘上,当需要显示这幅图像时直接从硬盘上读取,这样可以保证内存里每次只有一幅图的数据,并且切换时不需要重新解码图像文件,直接读取序列化后的图像文件,用以提高2幅图的切换速度。我现在遇到的问题就是不知如何才能将包含图像数据信息的BufferedImage对象序列化,BufferedImage本身没有实现Serializable接口, BufferedImage里还包含了一些其他类对象,这些对象也没有实现Serializable接口。寻求帮助。
//此处是你的BufferedImage
//......
//下面序列化
FileOutputStream out=new FileOutputStream(ImgName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
这样做的话图像切换时还需要对文件进行jpeg格式的解码,我需要处理的都是8000*4000之类的大图,这样做很影响效率。我的思路是先读取图像文件,再将图像对象用字节流的方式序列化到硬盘上,这样图像切换时,直接去对硬盘上的文件进行deserialize动作,恢复图像对象,这样既可以节约一幅图的内存,也可以节省对一般格式图像文件进行解码的时间。不知道我的思路对不对?