使用Bitmap.CompressFormat.WEBP_LOSSY压缩图像时出错已在API 30中添加

问题描述

我正在尝试使用以下方法将图像压缩并解码为base64字符串。当我将Bitmap.CompressFormat.WEBP用作压缩格式时,它工作正常,但是当使用此方法(Bitmap.CompressFormat.WEBP_LOSSY)作为压缩格式时,发出NoSuchFieldError错误。以下是代码

fun decodeImageAsPng(bitmap: Bitmap): String {
    val baos = ByteArrayOutputStream()
    bitmap.compress(Bitmap.CompressFormat.WEBP_LOSSY,1,baos)
    val imageBytes = baos.toByteArray()
    val result = Base64.encodetoString(imageBytes,Base64.DEFAULT)
    return result
}

下面是调用方法时的堆栈跟踪

java.lang.NoSuchFieldError: No static field WEBP_LOSSY of type Landroid/graphics/Bitmap$CompressFormat; in class Landroid/graphics/Bitmap$CompressFormat; or its superclasses (declaration of 'android.graphics.Bitmap$CompressFormat' appears in /system/framework/framework.jar)
        at com.example.aphachatapp.utils.BitmapUtils.decodeImageAsPng(BitmapUtils.kt:408)
        at com.example.aphachatapp.managers.FirebaseManager$updateMyPhoto$2.apply(FirebaseManager.kt:115)
        at com.example.aphachatapp.managers.FirebaseManager$updateMyPhoto$2.apply(FirebaseManager.kt:30)
        at io.reactivex.internal.operators.maybe.MaybeFlatten$FlatMapMaybeObserver.onSuccess(MaybeFlatten.java:88)
        at io.reactivex.internal.operators.single.SingleFlatMapMaybe$FlatMapMaybeObserver.onSuccess(SingleFlatMapMaybe.java:117)
        at io.reactivex.internal.operators.maybe.MaybeCreate$Emitter.onSuccess(MaybeCreate.java:73)
        at durdinapps.rxfirebase2.RxHandler.onSuccess(RxHandler.java:36)
        at com.google.android.gms.tasks.zzn.run(UnkNown Source:4)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)