描述:luban作为目前网上非常流行的一款压缩图片的开源库,在github上也拥有接近5000star的收藏量。 它的使用方便是毋庸置疑的。
最近在自己的项目中添加了luban压缩,出现了压缩多图的时候返回路径重复的情况,去查看了github上的issues,发现有很多人出现了和我一样的情况,我苦恼了很久并没有解决,最终在一个大神小伙伴的帮助下完成了。
/**
* 压缩多图
*
* @param pathList 传入的为图片原始路径
*/
private void compressMore(final List<String> pathList){
final LinkedList<Runnable> taskList = new LinkedList<>();
final ArrayList<String> newList = new ArrayList<>();//压缩后的图片路径
final Handler handler = new Handler();
class Task implements Runnable{
String path;
Task(String path){
this.path = path;
}
@Override
public void run() {
Luban.get(context)
.load(new File(path)) //传人要压缩的图片
.putGear(Luban.THIRD_GEAR) //设定压缩档次,默认三挡
.setCompressListener(new OnCompressListener() { //设置回调
@Override
public void onStart() {
AppManager.I().currentActivity().showDialog("加载中...");
}
@Override
public void onSuccess(File file) {
newList.add(file.getPath());
if(!taskList.isEmpty()){
Runnable runnable = taskList.pop();
handler.post(runnable);
}else {
//完成之后的个人操作
addPaths(newList);
AppManager.I().currentActivity().dismissDialog();
}
}
@Override
public void onError(Throwable e) {
}
}).launch(); //启动压缩
}
}
//循环遍历原始路径 添加至linklist中
for (String path :pathList){
taskList.add(new Task(path));
}
handler.post(taskList.pop());
}
以上仅为个人修改尝试,希望能够帮助一些遇到该情况的小伙伴。(我是一个小菜鸡)
在此感谢帮助我的小伙伴 --> 土夜 嗯~ 就是这样