该示例可以将几M的图片压缩成几十K, 当然, 是有损压缩。 类似新浪微博中的图片压缩。

代码是在线程中写的。

private Runnable bitRunnable = new Runnable(){@Overridepublic void run(){// 在缓存文件夹中创建一个文件String fileString = getSystemTime();mImgName = fileString + ".jpg";mUploadImage =  "SDCard/" + mImgName;// 压缩图片BitmapAccess baAccess = new BitmapAccess();mLoadBitmap = baAccess.imageZoom(mLoadBitmap, 400.00);//mLoadBitmap 是我从SD卡里拿到的图片,压缩大小try{FileOutputStream fos = null;fos = new FileOutputStream(mUploadImage);mLoadBitmap.compress(Bitmap.CompressFormat.JPEG, 30, fos);// 把数据写入文件质量是百分之三十// mBitmap.recycle();} catch (FileNotFoundException e){// TODO Auto-generated catch blocke.printStackTrace();}// 结束等待对话框sendMessage(6);}};


下面是图片的压缩方法

public Bitmap imageZoom(Bitmap bitmap, double maxSize){//获得图像输入输出流ByteArrayOutputStream baos = new ByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);byte[] b = baos.toByteArray();//获得当前图像的容量大小(KB)double mid = b.length / 1024;if (mid > 100)//如果该位图大小超过100KB{try{//将位图改成越 maxSize 这个大小double i = mid / maxSize;bitmap = Bitmap.createScaledBitmap(bitmap, (int) (bitmap.getWidth() / Math.sqrt(i)),(int) (bitmap.getHeight() / Math.sqrt(i)), true);} catch (Exception e){e.printStackTrace();}}return bitmap;}


更多相关文章

  1. Android(安卓)实现简单的画画版一
  2. Android(安卓)选择图片、上传图片之ImagePicker
  3. android 7.0 相机,拍照 调裁切提示 “无法加载此图片” 解决方案
  4. Android之多种Bitmap效果
  5. Android拍照、相册选取、裁剪图片
  6. 用户界面View之ImageView控件
  7. Android(安卓)Camera+SurfaceView实现自定义拍照
  8. android 拍照以及压缩处理
  9. Android(安卓)使用RoundedImageView得不到圆形图片,变成椭圆形的

随机推荐

  1. Android工程中怎样使用隐藏API
  2. Android(java)学习笔记123:Clock app编写报
  3. 疯狂android 的一些笔记
  4. Android开发一:开发环境搭建
  5. FileOutputStream中的 3种write方式
  6. Android(安卓)app项目和开发总结
  7. Android视频流解码
  8. android 文件操作方法集合类分享
  9. Android(安卓)StaggeredGrid 加下拉刷新
  10. android 笔记---开机启动Service或Activi