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这个包里,而最新的这个包的使用必须