使用Java,将图像保存到文件的最佳方式是什么?
问题描述:
我有一个学校的工作,我需要在一个文件中将任意图像和其他数据一起保存到磁盘。我们想到了将它与数据一起序列化的问题;然而,图像,即使BufferedImage
s,不能被序列化。使用Java,将图像保存到文件的最佳方式是什么?
什么是
最好
最简单的方法是使用Java将图像与其他数据一起保存到单个文件中?说实话,我并不在乎文件的大小。虽然,如果它被压缩了,我想这是一个加号。
答
ImageIO.write(img, "BMP", new File("filename.bmp"));
其中img是你的BufferedImage
。
之后,您可以用FileOutputStream
打开文件,并在后面或后面写入一些数据。 阅读时,您只需剪切附加的数据,并将其余部分视为图像。
答
如果你想要一个“可读”的解决方案,就像在一个文本文件中存储一样,你可以将图像编码为一个base64字符串并将其存储在你的文件中。 Java有few options in this question,例如apache commons。
如果你得到byte[]
在其他的答案说明你可以通过做
String imageString = new Base64().encodeBase64String(imageBytes);
得到一个字符串,并将
byte[] imageBytes = new Base64().decodeBase64(imageString);
得到字节数组回来,我怎么可以追加任意数据这个文件,并仍然相对容易地阅读它? – zneak 2010-12-08 15:34:53