diff --git a/app/src/main/java/io/legado/app/model/BookCover.kt b/app/src/main/java/io/legado/app/model/BookCover.kt index 8948cb504..7503c1e82 100644 --- a/app/src/main/java/io/legado/app/model/BookCover.kt +++ b/app/src/main/java/io/legado/app/model/BookCover.kt @@ -2,6 +2,7 @@ package io.legado.app.model import android.annotation.SuppressLint import android.content.Context +import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable import com.bumptech.glide.RequestBuilder import com.bumptech.glide.request.RequestOptions @@ -10,6 +11,7 @@ import io.legado.app.constant.PreferKey import io.legado.app.help.AppConfig import io.legado.app.help.BlurTransformation import io.legado.app.help.glide.ImageLoader +import io.legado.app.utils.BitmapUtils import io.legado.app.utils.getPrefBoolean import io.legado.app.utils.getPrefString import splitties.init.appCtx @@ -42,14 +44,13 @@ object BookCover { } val key = if (isNightTheme) PreferKey.defaultCoverDark else PreferKey.defaultCover val path = appCtx.getPrefString(key) - defaultDrawable = try { - Drawable.createFromPath(path) - ?: appCtx.resources.getDrawable(R.drawable.image_cover_default, null) - } catch (e: OutOfMemoryError) { - appCtx.resources.getDrawable(R.drawable.image_cover_default, null) - } catch (e: Exception) { - appCtx.resources.getDrawable(R.drawable.image_cover_default, null) + if (path.isNullOrBlank()) { + defaultDrawable = appCtx.resources.getDrawable(R.drawable.image_cover_default, null) + return } + defaultDrawable = BitmapUtils.decodeBitmap(path, 100, 150)?.let { + BitmapDrawable(appCtx.resources, it) + } ?: appCtx.resources.getDrawable(R.drawable.image_cover_default, null) } fun getBlurDefaultCover(context: Context): RequestBuilder { diff --git a/app/src/main/java/io/legado/app/utils/BitmapUtils.kt b/app/src/main/java/io/legado/app/utils/BitmapUtils.kt index c200980c2..00fa6dc32 100644 --- a/app/src/main/java/io/legado/app/utils/BitmapUtils.kt +++ b/app/src/main/java/io/legado/app/utils/BitmapUtils.kt @@ -45,7 +45,6 @@ object BitmapUtils { } op.inJustDecodeBounds = false return BitmapFactory.decodeFileDescriptor(ips.fd, null, op) - } /** 从path中获取Bitmap图片 @@ -53,7 +52,6 @@ object BitmapUtils { * @return */ fun decodeBitmap(path: String): Bitmap? { - val opts = BitmapFactory.Options() val ips = FileInputStream(path) opts.inJustDecodeBounds = true