一般來(lái)說(shuō)韩肝,現(xiàn)在上傳圖片基本上都需要,當(dāng)然自己寫(xiě)的也是可以的九榔,但是今天介紹的這個(gè)從介紹上基本上就顯示了它的NB之處哀峻,當(dāng)然能夠用人名最為框架名的基本上都是有他的厲害之處,不然不敢拿出來(lái)哲泊。
github地址 Luban https://github.com/Curzibn/Luban
現(xiàn)在開(kāi)始使用 implementation 'top.zibin:Luban:1.1.3'
圖片壓縮效果
效果就是這樣了剩蟀,現(xiàn)在開(kāi)始使用:
Luban.with(mContext)
.ignoreBy(100) //默認(rèn)100K一下的圖片不進(jìn)行壓縮
.load(pathList) //設(shè)置數(shù)據(jù)源
.setTargetDir(targetDir) //壓縮后的文件地址
.setCompressListener(new OnCompressListener() {
@Override
public void onStart() {
//壓縮開(kāi)始 顯示LoadingView
}
@Override
public void onSuccess(File file) {
//壓縮成功 關(guān)閉LoadingView 保存每一張圖片的地址
}
@Override
public void onError(Throwable e) {
//壓縮失敗 關(guān)閉LoadingView
}
}).launch(); //啟動(dòng)壓縮
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) {
//獲取到了存放圖片列表的數(shù)據(jù)
}
@Override
public void onError(Throwable t) {
}
@Override
public void onComplete() {
}
});
使用么反正就是這樣的,很簡(jiǎn)單的方法切威。原理的話育特,github上的原文已經(jīng)是非常詳細(xì)了,建議大家過(guò)去看看先朦。