luban壓縮library地址: https://github.com/Curzibn/Luban
我使用的是這個版本 implementation 'top.zibin:Luban:1.1.5'
使用方法如下:
private <T> void withLs(final List<String> pics) { Luban.with(this) .load(pics) .ignoreBy(100) .setTargetDir(getPath()) .filter(new CompressionPredicate() { @Override public boolean apply(String path) { return !(TextUtils.isEmpty(path) || path.toLowerCase().endsWith(".gif")); } }) .setRenameListener(new OnRenameListener() { @Override public String rename(String filePath) { try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(filePath.getBytes()); return new BigInteger(1, md.digest()).toString(32); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return ""; } }) .setCompressListener(new OnCompressListener() { @Override public void onStart() { } @Override public void onSuccess(File file) { Log.i("get_file_path", file.getAbsolutePath()); Log.i("compress_success", "恭喜你,壓縮成功了、、、、"); // showResult(originPhotos, file); } @Override public void onError(Throwable e) { } }).launch(); }
報錯,以下是錯誤日誌:
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.media.ExifInterface" on path: DexPathList[[zip file "/system/framework/com.google.android.maps.jar", zip file "/data/app/com.jky.pad.zhichi-1/base.apk", zip
解決方案:多引入一個庫
implementation 'top.zibin:Luban:1.1.5' implementation "com.android.support:exifinterface:27.1.1"
這是因爲android SDK最新的ExifInterface這個已經不在android.support.media.ExifInterface這個包裏了,而在android.media.ExifInterface這個包裏,而最新的這個包的使用必須