我有一项学校作业,我需要将任意图像与其他数据一起保存到磁盘中,并保存在单个文件中。
我们考虑将它与数据一起序列化;但是,图像,甚至BufferedImage
s,都无法序列化。
使用 Java 将图像与其他数据保存在单个文件中的最简单方法是什么?老实说,我并不真正关心文件大小。不过,如果它被压缩,我想这是一个加号。
我有一项学校作业,我需要将任意图像与其他数据一起保存到磁盘中,并保存在单个文件中。
我们考虑将它与数据一起序列化;但是,图像,甚至BufferedImage
s,都无法序列化。
使用 Java 将图像与其他数据保存在单个文件中的最简单方法是什么?老实说,我并不真正关心文件大小。不过,如果它被压缩,我想这是一个加号。
ImageIO.write(img, "BMP", new File("filename.bmp"));
img 是你的BufferedImage
.
之后,您可以打开文件FileOutputStream
并在之后或后面写入一些数据。阅读时,您只需剪切附加数据并将其余数据视为您的图像。
如果您想要一个“可读”的解决方案,例如存储在文本文件中,您可以将图像编码为 base64 字符串并将其存储在您的文件中。对于 Java,这个问题有几个选项,例如来自apache commons的选项。
如果您得到byte[]
其他答案中所示的内容,则可以通过执行获得 String
String imageString = new Base64().encodeBase64String(imageBytes);
并返回字节数组
byte[] imageBytes = new Base64().decodeBase64(imageString);