java - 使用 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)
解决方案
推荐阅读
- spring-boot - 在同一服务中使用之前,自动装配的 FluentProducerTemplate 是否需要清除其标头和正文?
- html - svg的大小调整
- python - read_csv 中的奇怪行为 na_values 参数
- error-handling - 为什么当我返回错误类型时没有隐式转换?
- go - 如何创建证书链
- r - 具有 NA 值的热图
- c# - SmtpClient Send(Mail) 函数超时错误
- python-3.x - 如何将我从列表中抓取的数据导出到我的 csv 文件?
- apache-spark - 带有 Hive 的 pyspark,追加将添加到现有分区并重复数据
- java - 使用 Eclipse Debugger 调试 Eclipse CDT 时出现奇怪的行为