使用Java,将图像保存到文件的最佳方式是什么?

问题描述:

我有一个学校的工作,我需要在一个文件中将任意图像和其他数据一起保存到磁盘。我们想到了将它与数据一起序列化的问题;然而,图像,即使BufferedImage s,不能被序列化。使用Java,将图像保存到文件的最佳方式是什么?

什么是 最好 最简单的方法是使用Java将图像与其他数据一起保存到单个文件中?说实话,我并不在乎文件的大小。虽然,如果它被压缩了,我想这是一个加号。

ImageIO.write(img, "BMP", new File("filename.bmp")); 

其中img是你的BufferedImage

之后,您可以用FileOutputStream打开文件,并在后面或后面写入一些数据。 阅读时,您只需剪切附加的数据,并将其余部分视为图像。

+0

得到字节数组回来,我怎么可以追加任意数据这个文件,并仍然相对容易地阅读它? – zneak 2010-12-08 15:34:53

如果你想要一个“可读”的解决方案,就像在一个文本文件中存储一样,你可以将图像编码为一个base64字符串并将其存储在你的文件中。 Java有few options in this question,例如apache commons

如果你得到byte[]在其他的答案说明你可以通过做

String imageString = new Base64().encodeBase64String(imageBytes); 

得到一个字符串,并将

byte[] imageBytes = new Base64().decodeBase64(imageString);