一般来说,现在上传图片基本上都需要,当然自己写的也是可以的,但是今天介绍的这个从介绍上基本上就显示了它的NB之处,当然能够用人名最为框架名的基本上都是有他的厉害之处,不然不敢拿出来。
github地址 Luban https://github.com/Curzibn/Luban
现在开始使用 implementation 'top.zibin:Luban:1.1.3'
效果就是这样了,现在开始使用:
Luban.with(mContext)
.ignoreBy(100) //默认100K一下的图片不进行压缩
.load(pathList) //设置数据源
.setTargetDir(targetDir) //压缩后的文件地址
.setCompressListener(new OnCompressListener() {
@Override
public void onStart() {
//压缩开始 显示LoadingView
}
@Override
public void onSuccess(File file) {
//压缩成功 关闭LoadingView 保存每一张图片的地址
}
@Override
public void onError(Throwable e) {
//压缩失败 关闭LoadingView
}
}).launch(); //启动压缩
Flowable.just(pathList)
.observeOn(Schedulers.io())
.map(new Function<List<String>, List<File>>() {
@Override public List<File> apply(@NonNull List<String> list) throws Exception {
return Luban.with(mContext).load(list).get();
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<List<File>>() {
@Override
public void onSubscribe(Subscription s) {
}
@Override
public void onNext(List<File> files) {
//获取到了存放图片列表的数据
}
@Override
public void onError(Throwable t) {
}
@Override
public void onComplete() {
}
});
使用么反正就是这样的,很简单的方法。原理的话,github上的原文已经是非常详细了,建议大家过去看看。