• Android 图片压缩


    添加Luban库  库地址:

    //https://github.com/Curzibn/Luban
    implementation 'top.zibin:Luban:1.1.8' //https://github.com/Curzibn/Luban

    使用方法:

    package com.example.sniffapplication.Utils;
    
    import android.content.Context;
    import android.net.Uri;
    import android.text.TextUtils;
    
    import java.io.File;
    import java.util.List;
    
    import top.zibin.luban.CompressionPredicate;
    import top.zibin.luban.Luban;
    import top.zibin.luban.OnCompressListener;
    
    public class ImageUtil {
        //图片压缩
        public static void Compression(Context content, Uri uri, OnCompressListener compressListener) {
           String path=  FileUtil.getFilePathFromURI(content,uri);
            Luban.with(content)
                    .load(path)
                    .ignoreBy(100)
                    .setTargetDir(getPath(content))
                    .setCompressListener(compressListener).launch();
        }
    
        private static String getPath(Context content) {
            return content.getCacheDir().getPath();
        }
    }
     private void CompressionImage(Uri uri, int imageIndex) {
            String realFileName = FileUtil.getFileRealNameFromUri(this, uri);
            ImageUtil.Compression(this, uri, new OnCompressListener() {
                @Override
                public void onStart() {
                    // TODO 压缩开始前调用,可以在方法内启动 loading UI
                }
    
                @Override
                public void onSuccess(File file) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            // TODO 压缩成功后调用,返回压缩后的图片文件
                            UploadImage(file.getPath(), imageIndex,realFileName);
                        }
                    });
    
                }
    
                @Override
                public void onError(Throwable e) {
                    e.printStackTrace();
                    // TODO 当压缩过程出现问题时调用
                }
            });
    
        }
     public static String getFilePathFromURI(Context context, Uri contentUri) {
            File rootDataDir = context.getExternalFilesDir(null);
    //        MyApplication.getMyContext().getExternalFilesDir(null).getPath();
            String fileName = getFileName(contentUri);
            if (!TextUtils.isEmpty(fileName)) {
                File copyFile = new File(rootDataDir + File.separator + fileName);
                copyFile(context, contentUri, copyFile);
                return copyFile.getAbsolutePath();
            }
            return null;
        }

    注意事项:load需要传入绝对路径 如果传入的是

    android.net.Uri  压缩成功后返回的是一个空的File
  • 相关阅读:
    Windows创建多个github git ssh秘钥
    Kafka(三)自动提交存在的问题?
    Kafka(二)关于Kafka设置(spring.kafka.consumer.enable-auto-commit=false)依然提交消息确认的offset问题分析。
    Kafka(一)集群搭建以及常用命令可视化工具
    CPU相关信息操作
    Nginx系列篇
    DB2——临时表
    DB2sql——insert all与insert first用法讲解与实例
    DB2sql——通过查询结果来create table 的3种方式
    DB21019E An error occurred while accessing the directory "/root".
  • 原文地址:https://www.cnblogs.com/tangchun/p/15363833.html
Copyright © 2020-2023  润新知