将图像高度和宽度减小50%,但磁盘上的图像大小保持不变

时间:2013-08-06 15:07:12

标签: java android

我试图通过调整图像的长度和宽度来缩小图像的大小,但它保持相同的大小(兆字节),有时甚至更大,即使它只有一半大。

String compressPath = Environment.getExternalStorageDirectory()+"/test2.jpg";
FileInputStream in = new FileInputStream(path);
Bitmap fullSizeBitmap = BitmapFactory.decodeStream(in);
Bitmap resized = Bitmap.createScaledBitmap(
    fullSizeBitmap, 
    (int)(fullSizeBitmap.getWidth()*0.5), 
    (int)(fullSizeBitmap.getHeight()*0.5), 
    true
);

FileOutputStream mOutputStream = new FileOutputStream(compressPath);
resized.compress(Bitmap.CompressFormat.PNG, 100, mOutputStream);

有什么问题?我必须降低质量吗?

1 个答案:

答案 0 :(得分:5)

Per Bitmap的Android doc:

  

质量提示压缩机,0-100。 0意味着压缩小   尺寸,100意味着压缩以获得最高质量。 某些格式,如PNG   这是无损的,将忽略质量设置

您的原始输入是JPG,但您将其输出到PNG。由于JPG将始终具有引入工件的质量下降,因此在转换时使生成的PNG文件更大。尝试将其保存为JPG,而不是80-100质量。

另外,在我的测试中,压缩到PNG所需的时间比压缩到JPG多2到5倍,因为PNG压缩是在软件中完成的,JPG是在硬件中完成的。因此,对于大多数图像,压缩到JPG可能更好。