提问:怎样将一个BufferedImage对象序列化保存在硬盘上?

chenweionline 2005-09-27 04:42:28
我需要在1个图像画板上切换显示2个图像,当前只显示其中的一副图像。因为图像文件比较大,所以我希望能够先分别从图像文件里读出图像对象,然后将其序列化保存在在硬盘上,当需要显示这幅图像时直接从硬盘上读取,这样可以保证内存里每次只有一幅图的数据,并且切换时不需要重新解码图像文件,直接读取序列化后的图像文件,用以提高2幅图的切换速度。

我现在遇到的问题就是不知如何才能将包含图像数据信息的BufferedImage对象序列化,BufferedImage本身没有实现Serializable接口, BufferedImage里还包含了一些其他类对象,这些对象也没有实现Serializable接口。

寻求帮助。
...全文
392 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
从今天开始吧 2005-09-29
  • 打赏
  • 举报
回复
同意楼上,实现了serializable接口的类都是可序列化保存,
congliu 2005-09-27
  • 打赏
  • 举报
回复
继承Serializable接口之后,执行toSerialize()函数
  • 打赏
  • 举报
回复
mark
chenweionline 2005-09-27
  • 打赏
  • 举报
回复
楼上的代码是直接保存成jpeg格式的图像文件了吧?
这样做的话图像切换时还需要对文件进行jpeg格式的解码,我需要处理的都是8000*4000之类的大图,这样做很影响效率。

我的思路是先读取图像文件,再将图像对象用字节流的方式序列化到硬盘上,这样图像切换时,直接去对硬盘上的文件进行deserialize动作,恢复图像对象,这样既可以节约一幅图的内存,也可以节省对一般格式图像文件进行解码的时间。不知道我的思路对不对?
itjourney 2005-09-27
  • 打赏
  • 举报
回复
BufferedImage image;
//此处是你的BufferedImage
//......
//下面序列化
FileOutputStream out=new FileOutputStream(ImgName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧