1.簡述
Android開發過程中圖片壓縮很常見,實現有很多方式,經過多種方式對比后,這里使用很好的方式就是使用Luban(魯班),對比原圖與壓縮后的圖片逆向推算出來的壓縮算法。 壓縮率真的很高,并且很清晰。基本秒殺,使用系統的壓縮方式等。使用,也算很簡單。
2.引用
//在build.gradle中引入框架
implementation 'top.zibin:Luban:1.1.8'
3.代碼使用
Luban.with(this) //context
.load(imgfile) // 需要壓縮的圖片file
.ignoreBy(100) //壓縮率 ,默認100
.setTargetDir(getPath()) //壓縮后文件目錄
.filter(new CompressionPredicate() {
@Override
public boolean apply(String path) {
return !(TextUtils.isEmpty(path) || path.toLowerCase().endsWith(".gif"));
}
})
.setCompressListener(new OnCompressListener() {
@Override
public void onStart() {
// TODO 壓縮開始前調用,可以在方法內啟動 loading UI
}
@Override
public void onSuccess(File file) {
// TODO 壓縮成功后調用,返回壓縮后的圖片文件
//如果希望替換原圖可以執行這行
file.renameTo(imgfile);
}
@Override
public void onError(Throwable e) {
// TODO 當壓縮過程出現問題時調用
}
}).launch();
4.測試結果
拍攝圖片大小: 壓縮前: 10.0 MB
拍攝圖片大小: 壓縮后: 258 KB
圖片清晰度沒有太大變化,大概壓縮比例如下圖所示.
無標題.png