209_压缩图片Bitmap

时间:2022-12-24 09:09:09



209_压缩图片Bitmap



直接拿相册里的Bitmap太大

那么我们来一个方法来压缩Bitmap



public Bitmap compressImage(Bitmap image) {
//创建baos字节数组输出流
ByteArrayOutputStream baos = new ByteArrayOutputStream();

//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos
image.compress(Bitmap.CompressFormat.JPEG, 100, baos);

int options = 100;

//循环判断如果压缩后图片是否大于100kb,大于继续压缩
while (baos.toByteArray().length / 1024 > 1000) {

//重置baos即清空baos
baos.reset();

//第一个参数 :图片格式 ,第二个参数: 图片质量,100为最高,0为最差 ,第三个参数:保存压缩后的数据的流

//这里压缩options%,把压缩后的数据存放到baos
image.compress(Bitmap.CompressFormat.JPEG, options, baos);

//每次都减少10
options -= 10;
}

//把压缩后的数据baos存放到ByteArrayInputStream
ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());

//ByteArrayInputStream数据生成图片
Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);

return bitmap;
}