【问题标题】:Image size increases图像尺寸增加
【发布时间】:2013-05-07 22:17:09
【问题描述】:

使用以下代码上传图片。

ByteArrayOutputStream baos = new ByteArrayOutputStream();
BufferedImage img = ImageIO.read(new File("abc.tiff"));
ImageIO.write(img, "tiff", baos);
img.flush();  
img=null;

byte[] bytes2 = baos.toByteArray();
if(baos != null) {
    baos.flush();
    baos.close();
}

System.out.println("bytes2 size::::" + bytes2.length);

我的原始 tiff 图像大小为 119 kb,当我打印图像字节时,我得到 800974 字节长度。

为什么图片尺寸变大了?可能是什么问题

【问题讨论】:

    标签: java image image-processing tiff


    【解决方案1】:

    显然您的abc.tiff 文件已存档(TIFF 格式具有存档版本),而img 包含未存档的未打包数据。这就是为什么你的输出是782 kb 而不是119

    【讨论】:

    • 不正确。 bytes2 大小是(重新)编码的 tiff 图像的大小
    • @leonbloy 好吧,我看不出你和我的答案有什么不同。可能存在误解:术语archived 我的意思是compressed。对不起我的英语不好。
    • 你说得对,img 包含一个原始图像(因此它更大),但是 OP 没有测量它,他正在将 img 重新压缩到一个新的 TIFF 中(在内存中,在baos),并对其进行测量。
    【解决方案2】:

    TIFF 格式与大多数图像格式一样,支持多种图像模式和压缩策略。 ImageIO.write() 在优化方面可能不是很聪明,或者可能需要一些调整。参见例如here

    【讨论】:

      猜你喜欢
      • 2015-01-27
      • 2021-02-07
      • 2020-01-24
      • 1970-01-01
      • 2012-07-08
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多