68 lines
1.9 KiB
Java
68 lines
1.9 KiB
Java
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();
|
|
}
|
|
|
|
}
|