android中图片压缩上传方法之Luban库 您所在的位置:网站首页 红米note怎样压缩图片 android中图片压缩上传方法之Luban库

android中图片压缩上传方法之Luban库

2024-07-14 17:00| 来源: 网络整理| 查看: 265

一.Luban是什么?

Luban(鲁班) —— Android图片压缩工具,仿微信朋友圈压缩策略。

二.使用步骤 1.引入依赖 //图片压缩库 implementation 'top.zibin:Luban:1.1.8' 2.属性方法 方法描述load传入原图filter设置开启压缩条件ignoreBy不压缩的阈值,单位为KsetFocusAlpha设置是否保留透明通道setTargetDir缓存压缩图片路径setCompressListener压缩回调接口setRenameListener压缩前重命名接口 3.使用

这个是在于拍照或从相册中选择图片上传前进行压缩的

/** * todo onActivityResult 对拍照、相册选择图片的返回结果进行处理 * @param requestCode 返回码,用于确定是哪个 Activity 返回的数据 * @param resultCode 返回结果,一般如果操作成功返回的是 RESULT_OK * @param data 返回对应 activity 返回的数据 */ @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode){ // 表示 调用照相机拍照 case REQUEST_CODE_FROM_CAMERA: if(resultCode == RESULT_OK){ try { // 获取输入流 FileInputStream is = new FileInputStream(mFilePath); // 把流解析成bitmap,此时就得到了清晰的原图 Bitmap imageBitmap = BitmapFactory.decodeStream(is); // 使用insertImage方法是要获取到写存储权限 Uri imageUri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(),imageBitmap, "IMG"+ Calendar.getInstance().getTime() ,null)); // imgString = UriToFile(imageUri); getFile(imgString,imageUri,1); } catch (FileNotFoundException e) { e.printStackTrace(); } } break; //相册 case REQUEST_CODE_FROM_PHOTO: if(resultCode == RESULT_OK){ Uri uri = data.getData(); imgString = UriToFile(uri); getFile(imgString,uri,2); //压缩并上传 } break; } } /** * todo 使用 luban 第三方库 压缩图片 * @param path 原图片路径(String) * @param uri * @param flag */ private void getFile(String path,Uri uri,int flag) { // File file = new File(path.getPath());//创建文件 Luban.with(this) .load(path) // 传入要压缩的图片路径 .setCompressListener(new OnCompressListener() { // 设置回调 @Override public void onStart() { // 压缩开始前调用,可以在方法内启动 loading UI } @Override public void onSuccess(File file) { // 压缩成功后调用上传图片接口,File是压缩后的图片文件 upLoadImg(file.getPath(),uri,flag); } @Override public void onError(Throwable e) { e.printStackTrace(); } }).launch(); } /** * todo 上传图片(api) * @param imgString 压缩后的图片路径 (字符串) * @param uri Uri图片资源 * @param flag 上传方式,取值1,2。1表示拍照,2表示相册 */ private void upLoadImg(String imgString,Uri uri,int flag) { //使用接口上传图片 }

上面对图片就可以进行压缩啦,当然,我上面是一张一张上传压缩,如果是一组的话,也很简单,稍微改下就可以

private void getFile1(List images) { Luban.with(this) .load(images) // 传入要压缩的图片数组 .setCompressListener(new OnCompressListener() { // 设置回调 @Override public void onStart() { // 压缩开始前调用,可以在方法内启动 loading UI } @Override public void onSuccess(File file) { // 压缩成功后调用上传图片接口,File是压缩后的图片文件 upLoadImg1(file.getPath()); } @Override public void onError(Throwable e) { e.printStackTrace(); } }).launch(); }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有