我正在尝试在Java中创建一个简单的图像编辑程序。我创建了一个名为
我认为使用Java的默认
我知道可以覆盖
ImageCanvas
的对象,它包含有关正在编辑的图像的所有信息(一些基本属性、应用的效果列表、BufferedImage
层的列表等)。我想要一种简单的方法将其保存到磁盘上,以便以后可以再次打开。我认为使用Java的默认
Serializable
接口可能正是我要寻找的,我可以将整个对象写入文件,然后在稍后的时间重新读取它。但是,ImageCanvas
包括一个ArrayList<BufferedImage>
,而BufferedImage
不可序列化(其他所有内容都可以)。我知道可以覆盖
writeObject()
和readObject()
方法,但我从未这样做过,并且想知道是否有任何简单的方法可以让Java序列化其他所有内容,并使用自定义方式读取/写入BufferedImage
到磁盘?或者是否有其他更容易将整个ImageCanvas
对象写入磁盘的方法被我忽略了?最终我可能会实现自己的自定义图像文件类型,但是现在我想要一个快速而简单的方法来暂时保存文件,同时进行测试(ImageCanvas
类会经常更改,因此在最终确定之前,我不想不断更新我的自定义文件类型)。
out.defaultWriteObject()
。 - HopefullyHelpfulBufferedImage
列表是瞬态的,所以不会被序列化。我们使用ImageIO.write
将原始字节写入流中。 - Sam Barnum