package com.dayu.pipirrapp.tool; import android.content.Context; import android.net.Uri; import com.luck.picture.lib.config.PictureMimeType; import com.luck.picture.lib.engine.CompressFileEngine; import com.luck.picture.lib.interfaces.OnKeyValueResultCallbackListener; import com.luck.picture.lib.utils.DateUtils; import java.io.File; import java.util.ArrayList; import top.zibin.luban.Luban; import top.zibin.luban.OnNewCompressListener; import top.zibin.luban.OnRenameListener; /** * ImageFileCompressEngine -自定义图片压缩 * * @author zuoxiao * @version 1.0 * @since 2024-12-10 */ public class ImageFileCompressEngine implements CompressFileEngine { @Override public void onStartCompress(Context context, ArrayList source, OnKeyValueResultCallbackListener call) { Luban.with(context).load(source).ignoreBy(100).setRenameListener(new OnRenameListener() { @Override public String rename(String filePath) { int indexOf = filePath.lastIndexOf("."); String postfix = indexOf != -1 ? filePath.substring(indexOf) : ".jpg"; return DateUtils.getCreateFileName("CMP_") + postfix; } }).filter(path -> { if (PictureMimeType.isUrlHasImage(path) && !PictureMimeType.isHasHttp(path)) { return true; } return !PictureMimeType.isUrlHasGif(path); }).setCompressListener(new OnNewCompressListener() { @Override public void onStart() { } @Override public void onSuccess(String source, File compressFile) { if (call != null) { call.onCallback(source, compressFile.getAbsolutePath()); } } @Override public void onError(String source, Throwable e) { if (call != null) { call.onCallback(source, null); } } }).launch(); } }