如何在不影响位图大小的情况下降低位图质量?
这是我要获取的递归函数:
private String compressIv1(Bitmap b , int quality){
long size_on_disk = 0;
ByteArrayOutputStream byteArrayOutputStream1 = new ByteArrayOutputStream();
b.compress(Bitmap.CompressFormat.PNG, quality, byteArrayOutputStream1);
byte[] byteArray1 = byteArrayOutputStream1 .toByteArray();
App.registerBitmapModel.bitmapSize1 = byteArray1.length/1024;
size_on_disk = byteArray1.length/1024;
Log.e("size_on_disk","=>"+size_on_disk);
Bitmap temp_b = BitmapFactory.decodeByteArray(byteArray1, 0, byteArray1.length);
if(quality <= 0)
return "";
if(size_on_disk >= 1000)
{
quality = quality - 10;
compressIv1(temp_b,quality);
}else{
encodedImg1 = "data:image/jpeg;base64," + Base64.encodeToString(byteArray1, Base64.DEFAULT);
return encodedImg1;
}
return "";
}
但我得到相同的尺寸:
Log.e("size_on_disk","=>"+size_on_disk);
答案 0 :(得分:1)
由于['A', 'B', 'B', 'A']
格式是无损的,因此它将忽略质量设置,因此压缩的结果始终相同。这是docs:
quality-int:提示压缩器,0-100。 0表示小尺寸压缩,100表示最大质量压缩。某些格式(例如无损的PNG)会忽略质量设置