我有一个学校的工作,我需要在一个文件中将任意图像与其他数据一起保存到磁盘。
我们考虑过将其与数据一起序列化;但是,图像,即使是BufferedImage
,也无法序列化。
使用Java将最佳最简单的方法用于将其他数据保存在单个文件中是什么?老实说,我真的不关心文件大小。但是,如果它被压缩,我认为这是一个加号。
答案 0 :(得分:5)
ImageIO.write(img, "BMP", new File("filename.bmp"));
其中img是您的BufferedImage
。
之后,您可以使用FileOutputStream
打开文件并在后面或后面写一些数据。
阅读时,您只需剪切附加数据并将其余数据视为您的图像。
答案 1 :(得分:3)
如果您想要一个“可读”的解决方案,就像存储在文本文件中一样,您可以将该图像编码为base64字符串并将其存储在您的文件中。 Java有一个few options in this question,例如来自apache commons的那个。
如果你得到其他答案中所示的byte[]
,你可以通过
String imageString = new Base64().encodeBase64String(imageBytes);
用
返回字节数组byte[] imageBytes = new Base64().decodeBase64(imageString);