我试图通过调整图像的长度和宽度来缩小图像的大小,但它保持相同的大小(兆字节),有时甚至更大,即使它只有一半大。
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);
有什么问题?我必须降低质量吗?
答案 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可能更好。