Android(安卓)图像系列: 图片的压缩
16lz
2021-01-26
该示例可以将几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;}
更多相关文章
- Android(安卓)实现简单的画画版一
- Android(安卓)选择图片、上传图片之ImagePicker
- android 7.0 相机,拍照 调裁切提示 “无法加载此图片” 解决方案
- Android之多种Bitmap效果
- Android拍照、相册选取、裁剪图片
- 用户界面View之ImageView控件
- Android(安卓)Camera+SurfaceView实现自定义拍照
- android 拍照以及压缩处理
- Android(安卓)使用RoundedImageView得不到圆形图片,变成椭圆形的