0

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

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);

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

4

1 回答 1

5

根据位图的 Android 文档:

压缩机质量提示,0-100。0 表示压缩为小尺寸,100 表示压缩为最大质量。某些格式,例如无损的 PNG,将忽略质量设置

您的原始输入是 JPG,但您将其输出到 PNG。由于 JPG 总是会出现质量下降,从而引入伪影,从而使生成的 PNG 文件在转换时变大。尝试将其保存为 80-100 质量的 JPG。

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

于 2013-08-06T15:13:19.530 回答