【问题标题】:Bitmap.Comp() method in android. Quality = 100 gives image larger in size than original imageandroid 中的 Bitmap.Comp() 方法。质量 = 100 使图像尺寸大于原始图像
【发布时间】:2015-11-07 03:21:17
【问题描述】:

我正在使用 Bitmap 的 compress() 方法在以下代码的帮助下压缩我的图像:

ByteArrayOutputStream baos;
Bitmap img = BitmapFactory.decodeFile(imgs[i].getAbsolutePath());
img.compress(Bitmap.CompressFormat.JPEG, compFactor, baos);
byte[] compImgBytes;
compImgBytes = baos.toByteArray();
OutputStream out1 = new BufferedOutputStream(new FileOutputStream(
        new File(dir.getString("dir", null) + File.separator +
        String.valueOf(imgsName) + ".jpg")));
out1.write(compImgBytes);

问题是,当我使用 100 作为此代码的压缩因子 (compFactor = 100) 时,生成的图像的大小大于被压缩的图像。我所要做的就是根据 Bitmap 类的 Android 文档以最高质量压缩图像。

为什么结果图像的大小大于原始图像的大小?我错过了什么吗?

【问题讨论】:

  • 原始图像已被压缩,因为 AFAIK 仅适用于 Android 的文件格式是压缩格式(PNG、JPEG)。根据原始图像的文件格式和质量等级,100 质量的 JPEG 会更大是合理的。

标签: android image bitmap image-compression


【解决方案1】:

传入100为质量表示:

100 表示压缩以获得最高质量

这意味着压缩器将对原始字节进行很少的压缩...您正在加载的图像可能会以更高的压缩率保存。因此,您新压缩的图像比原始图像大。

【讨论】:

  • 既然JPEG是一种压缩格式,那么你所说的原始字节是未压缩的图像吗?
  • 是的。您正在调用decodeFile,它会解压缩内存中的图像。然后compress 获取内存字节并压缩它们。
  • 感谢@Buddy 的指导!这真的很有帮助!
猜你喜欢
  • 2016-06-11
  • 2013-04-17
  • 2023-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多