/***压缩图片,等比例压缩手机宽高,大小不超过200KB,如果图片本身大小不超过200KB就不压缩*@paramcontext*@parambitmap*@return*/publicstaticBitmapcompressBitmap(Contextcontext,Bitmapbitmap){ByteArrayOutputStreambaos=newByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.JPEG,100,baos);//质量压缩方法,这里10表示不压缩,把压缩后的数据存放到baos中byte[]b=baos.toByteArray();//将字节换成KBdoublemid=b.length/1024;//图片允许最大空间单位:KBdoublemaxSize=200.00;if(mid>maxSize){BitmapimgBitmap=compressBitmap(b,ScreenTools.getInstance(context).getScreenWidth(),ScreenTools.getInstance(context).getScreenHeight());imgBitmap.compress(Bitmap.CompressFormat.JPEG,100,baos);//质量压缩方法,这里10表示不压缩,把压缩后的数据存放到baos中byte[]tb=baos.toByteArray();//将字节换成KBdoublemidk=tb.length/1024;if(midk>maxSize){intoptions=100;while(mid>maxSize&&options/3>0){//循环判断如果压缩后图片是否大于10kb,大于继续压缩baos.reset();//重置baos即清空baosimgBitmap.compress(Bitmap.CompressFormat.JPEG,options,baos);//这里压缩options%,把压缩后的数据存放到baos中options-=options/3;//每次都减少20%}ByteArrayInputStreamisBm=newByteArrayInputStream(baos.toByteArray());//把压缩后的数据baos存放到ByteArrayInputStream中returnBitmapFactory.decodeStream(isBm,null,null);//把ByteArrayInputStream数据生成图片}returnimgBitmap;}returnbitmap;}/***压缩图片,等比例压缩手机宽高,大小不超过200KB*@paramcontext*@parampath*@return*/publicstaticBitmapcompressBitmap(Contextcontext,Stringpath){Bitmapbitmap=compressBitmap(path,ScreenTools.getInstance(context).getScreenWidth(),ScreenTools.getInstance(context).getScreenHeight());ByteArrayOutputStreambaos=newByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.JPEG,100,baos);//质量压缩方法,这里10表示不压缩,把压缩后的数据存放到baos中byte[]b=baos.toByteArray();//将字节换成KBdoublemid=b.length/1024;//图片允许最大空间单位:KBdoublemaxSize=200.00;if(mid>maxSize){intoptions=100;while(mid>maxSize&&options/3>0){//循环判断如果压缩后图片是否大于10kb,大于继续压缩baos.reset();//重置baos即清空baosbitmap.compress(Bitmap.CompressFormat.JPEG,options,baos);//这里压缩options%,把压缩后的数据存放到baos中options-=options/3;//每次都减少30%}ByteArrayInputStreamisBm=newByteArrayInputStream(baos.toByteArray());//把压缩后的数据baos存放到ByteArrayInputStream中returnBitmapFactory.decodeStream(isBm,null,null);//把ByteArrayInputStream数据生成图片}returnbitmap;}/****@paramoptions*@paramrqsW*@paramrqsH*@return*/publicfinalstaticintcaculateInSampleSize(Optionsoptions,intrqsW,intrqsH){finalintheight=options.outHeight;finalintwidth=options.outWidth;intinSampleSize=1;if(height>rqsH||width>rqsW){finalintheightRatio=Math.round((float)height/(float)rqsH);finalintwidthRatio=Math.round((float)width/(float)rqsW);inSampleSize=heightRatio<widthRatio?heightRatio:widthRatio;}returninSampleSize;}/***@parampathbitmapsourcepath*@paramrqsW*@paramrqsH*@returnBitmap{@linkBitmap}*/publicfinalstaticBitmapcompressBitmap(Stringpath,intrqsW,intrqsH){finalOptionsoptions=newOptions();options.inJustDecodeBounds=true;BitmapFactory.decodeFile(path,options);options.inSampleSize=caculateInSampleSize(options,rqsW,rqsH);options.inJustDecodeBounds=false;returnBitmapFactory.decodeFile(path,options);}/***@parambts*@paramreqsW*@paramreqsH*@return*/publicfinalstaticBitmapcompressBitmap(byte[]bts,intreqsW,intreqsH){finalOptionsoptions=newOptions();options.inJustDecodeBounds=true;BitmapFactory.decodeByteArray(bts,0,bts.length,options);options.inSampleSize=caculateInSampleSize(options,reqsW,reqsH);options.inJustDecodeBounds=false;returnBitmapFactory.decodeByteArray(bts,0,bts.length,options);}


更多相关文章

  1. Android(安卓)-- PullToRefresh应用
  2. Android中的GalleryView实例演示-周末福利有美女图
  3. ViewPager用法(一)图片+原点+循环播放
  4. Android(安卓)设置TextView滑动滚动条和滑动效果
  5. 锦囊篇|一文摸懂RxJava
  6. RelativeLayout布局属性详解
  7. android实现xml数据的解析
  8. Android两种 旋转Bitmap方法
  9. Android多点触摸缩放图片-android学习之旅(四)

随机推荐

  1. AndroidManifest.xml uses-feature 详解
  2. android小demo笔记
  3. [置顶] 我的Android进阶之旅------>Andro
  4. Android(安卓)文件上传
  5. 去掉tabhost横线
  6. Android 去掉自定义dialog的白色边框
  7. 【支付宝】Android(安卓)支付宝支付 沙箱
  8. Android很有用的代码片段
  9. Android(安卓)中 如何生成class文件 后再
  10. android 进入页面隐藏输入法