package com.ckkj.water.utils; import android.content.Context; import android.text.TextUtils; import java.io.File; import top.zibin.luban.CompressionPredicate; import top.zibin.luban.Luban; import top.zibin.luban.OnCompressListener; /** * 鲁班压缩文件 */ public class LubanCompressUtil { private static LubanCompressUtil mInstance; private Context mContext; public static LubanCompressUtil getInstance() { if (mInstance == null) { if (mInstance == null) { mInstance = new LubanCompressUtil(); } } return mInstance; } public interface CompressCallback{ void success(File file); void fail(String failMsg); } public void getCompressFile(Context context,File oldFile,CompressCallback callback){ File compressFile = null; Luban.with(context) .load(oldFile) // 原始图片文件 .ignoreBy(100) // 忽略不压缩图片大小 .filter(new CompressionPredicate() { @Override public boolean apply(String path) { return !(TextUtils.isEmpty(path) || path.toLowerCase().endsWith(".gif")); } }) .setCompressListener(new OnCompressListener() { @Override public void onStart() { // 压缩开始前调用 } @Override public void onSuccess(File file) { // 压缩成功后调用 if(callback!= null){ callback.success(file); } } @Override public void onError(Throwable e) { // 当压缩过程出现问题时调用 } }).launch(); } }