所以我有一个图像,叫做
square.png
,大小约为3.7kB。我将其读入BufferedImage,如下所示:
BufferedImage img = ImageIO.read("square.png");
此时,我尝试将几个不同的对象写入磁盘。
ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream("square_out.data"));
我尝试用ImageIcon包装图像:
stream.writeObject(new ImageIcon(img));
我尝试了一个与图像像素尺寸相同的2D阵列(800x600)。
我尝试将该数组包装在一个实现Serializable的自定义类中并编写它。
所有上述技术都导致
square_out.data
大小约为1.9MB。考虑到原始图像只有几千字节,这是巨大的。这也很奇怪,因为每个人的尺寸完全相同。对此有什么合理的解释吗?我想存储很多这样的文件,所以荒谬的文件大小令人烦恼。