【问题标题】:Java - Why is my Serializable object file size so large?Java - 为什么我的可序列化对象文件大小如此之大?
【发布时间】:2015-03-26 08:49:48
【问题描述】:

所以我有一个名为square.png 的图像,大小约为 3.7 kB。我将其读入 BufferedImage 如下:

BufferedImage img = ImageIO.read("square.png");

此时我尝试将几个不同的对象写入磁盘。

ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream("square_out.data"));

我尝试了用 ImageIcon 包裹的图像:stream.writeObject(new ImageIcon(img));

我尝试了一个与图像像素尺寸(800x600)相同大小的二维数组。

我尝试将该数组包装在实现 Serializable 的自定义类中并编写它。

以上所有技术都生成了大小约为 1.9 MB 的square_out.data。考虑到原始图像只有几千字节,这是巨大的。这也很奇怪,因为每个人的大小完全相同。对此有任何合理的解释/是否有解决方法?我想存储很多这些,所以荒谬的文件大小很麻烦。

【问题讨论】:

  • 我的帖子回答了你的问题吗?如果是这样,请考虑accepting 它,或者详细说明您所追求的。

标签: java image serialization filesize


【解决方案1】:

因为BufferedImage 在内部以未压缩格式存储图像(这就是序列化的内容)。

使用ImageIO.write 以压缩格式保存图像。

【讨论】:

    猜你喜欢
    • 2012-09-25
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多