1.导入:
compile 'io.reactivex:rxandroid:1.2.1' compile 'io.reactivex:rxjava:1.1.6' compile 'top.zibin:Luban:1.0.9' 2. 使用Luban内部采用IO线程进行图片压缩,外部调用只需设置好结果监听即可:
Luban.get(this) .load(File) //传人要压缩的图片 .putGear(Luban.THIRD_GEAR) //设定压缩档次,默认三挡 .setCompressListener(new OnCompressListener() { //设置回调 @Override public void onStart() { // TODO 压缩开始前调用,可以在方法内启动 loading UI } @Override public void onSuccess(File file) { // TODO 压缩成功后调用,返回压缩后的图片文件 } @Override public void onError(Throwable e) { // TODO 当压缩过去出现问题时调用 } }).launch(); //启动压缩 3.RxJava方式:RxJava调用方式请自行随意控制线程:
Luban.get(this) .load(file) .putGear(Luban.THIRD_GEAR) .asObservable() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .doOnError(new Action1<Throwable>() { @Override public void call(Throwable throwable) { throwable.printStackTrace(); } }) .onErrorResumeNext(new Func1<Throwable, Observable<? extends File>>() { @Override public Observable<? extends File> call(Throwable throwable) { return Observable.empty(); } }) .subscribe(new Action1<File>() { @Override public void call(File file) { // TODO 压缩成功后调用,返回压缩后的图片文件 } }).launch(); //启动压缩 4. 方法对应表 方法名功能load(File file)传入要压缩的文件setFilename(String filename)设置压缩后图片命名putGear(int gear)设置压缩档次