04-1114:44:30.8451918419255EAndroidRuntime:java.lang.IllegalArgumentException: quality must be 0..10004-1114:44:30.8451918419255EAndroidRuntime: at android.graphics.Bitmap.compress(Bitmap.java:1436)
// 图片质量压缩踩过的坑// 1.quality must be 0..100// 2.输出流如果reset之后要重新压缩publicstaticBitmapcompressBitmap(Bitmap bitmap,long limit){
if(bitmap !=null){
int quality =100;ByteArrayOutputStream byteOutStream =newByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, byteOutStream);// 循环判断压缩后图片是否超过限制大小while(byteOutStream.toByteArray().length /1024> limit){
// reset byteOutStream
byteOutStream.reset();
quality -=10;if(quality <=0){
// 由于reset byteOutStream了,所以要重新压缩,否则bitmap就为空
quality +=10;
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, byteOutStream);break;}
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, byteOutStream);}Log.d(TAG,"quality is "+ quality +" bitmap bytesize is "+ bitmap.getByteCount());returnBitmapFactory.decodeStream(newByteArrayInputStream(byteOutStream.toByteArray()),null,null);}else{
returnnull;}}