引入sdk依賴
implementation 'top.zibin:Luban:1.1.3'//鲁班压缩工具
鲁班压缩工具类
public class LubanCompressUtils {
//压缩文件存放路径
final static String STOREPATH = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "shop";
/**
* 压缩文件
* @param filePath 本地文件路径
* @param compressListener
*/
public static void compressFile(String filePath,OnCompressListener compressListener){
File file = new File(filePath);
Log.e("Luban", "file "+file.getPath() +" "+file.length());
File directory = new File(STOREPATH);
if(!directory.exists()){
directory.mkdir();
}
if(file.length() > 1024*1024/2){//是否大于500k
Luban.with(MyApp.getContext())
.load(file) // 传人要压缩的图片列表
.ignoreBy(100) // 忽略不压缩图片的大小
.setTargetDir(STOREPATH) // 设置压缩后文件存储位置
.setCompressListener(compressListener)/*设置回调*/
.launch(); //启动压缩
}else {
compressListener.onSuccess(file);
}
}
/**
* 压缩多个文件
* @param multiFileListener
* @param filePaths 本地文件路径
*/
public static void compressFile(MultiFileListener multiFileListener,final List<File> files,String... filePaths){
final List<String> fileStrings = new ArrayList<>(Arrays.asList(filePaths));
String filePath = fileStrings.get(0);
compressFile(filePath, new OnCompressListener() {
@Override
public void onStart() {
}
@Override
public void onSuccess(File file) {
fileStrings.remove(0);
files.add(file);
if(fileStrings.size() == 0 ){
multiFileListener.onSuccess(files);
}else {
compressFile(multiFileListener, files, fileStrings.toArray(new String[fileStrings.size()]));
}
}
@Override
public void onError(Throwable e) {
multiFileListener.onError(e);
}
});
}
public interface MultiFileListener{
public void onSuccess(List<File> files);
public void onError(Throwable e);
}
}
也可以加QQ群交流技术