第一步:在build中引用压缩包
implementation 'top.zibin:Luban:1.1.8'
第二步:写压缩工具类
public static void compress(Context context, File file, Handler.Callback callback) {
Luban.with(context)
.load(file)
.ignoreBy(100)
.setTargetDir(Constant.photo_path)
.filter(path -> !(TextUtils.isEmpty(path) || path.toLowerCase().endsWith(".gif")))
.setCompressListener(new OnCompressListener() {
@Override
public void onStart() {
// TODO 压缩开始前调用,可以在方法内启动 loading UI
LogUtils.debug(TAG, "图片压缩:onStart");
}
@Override
public void onSuccess(File file) {
// TODO 压缩成功后调用,返回压缩后的图片文件
LogUtils.debug(TAG, "图片压缩:onSuccess");
Message message = Message.obtain();
message.obj = file;
callback.handleMessage(message);
}
@Override
public void onError(Throwable e) {
// TODO 当压缩过程出现问题时调用
LogUtils.debug(TAG, "图片压缩:onError," + e.getMessage());
}
}).launch();
}
第三步:activity中引用
CompressUtils.compress(this, takePhotoFile, msg -> {
File compressFile = (File) msg.obj;
long length = compressFile.length();
Log.e("aaa", "图片压缩后: " + length / 1024.f / 1024.f + "MB");
return false;
});