diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/provider/ImageProvider.kt b/app/src/main/java/io/legado/app/ui/book/read/page/provider/ImageProvider.kt index ef9d9dc6d..d88e26c95 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/provider/ImageProvider.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/provider/ImageProvider.kt @@ -14,7 +14,6 @@ import io.legado.app.help.coroutine.Coroutine import io.legado.app.model.localBook.EpubFile import io.legado.app.utils.BitmapUtils import io.legado.app.utils.FileUtils -import io.legado.app.utils.isXml import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.withContext import splitties.init.appCtx @@ -93,8 +92,10 @@ object ImageProvider { op.inJustDecodeBounds = true BitmapFactory.decodeFile(file.absolutePath, op) if (op.outWidth < 1 && op.outHeight < 1) { - putDebug("ImageProvider: delete file due to image size ${op.outHeight}*${op.outWidth}. path: ${file.absolutePath}") - file.delete() + Coroutine.async { + putDebug("ImageProvider: delete file due to image size ${op.outHeight}*${op.outWidth}. path: ${file.absolutePath}") + file.delete() + } return Size(errorBitmap.width, errorBitmap.height) } return Size(op.outWidth, op.outHeight) @@ -112,6 +113,7 @@ object ImageProvider { val cacheBitmap = bitmapLruCache.get(src) if (cacheBitmap != null) return cacheBitmap val vFile = BookHelp.getImage(book, src) + if (!vFile.exists()) return errorBitmap @Suppress("BlockingMethodInNonBlockingContext") return kotlin.runCatching { val bitmap = BitmapUtils.decodeBitmap(vFile.absolutePath, width, height) @@ -119,16 +121,10 @@ object ImageProvider { bitmapLruCache.put(src, bitmap) bitmap }.onFailure { - Coroutine.async { - putDebug( - "ImageProvider: decode bitmap failed. path: ${vFile.absolutePath}\n$it", - it - ) - if (FileUtils.readText(vFile.absolutePath).isXml()) { - putDebug("ImageProvider: delete xml file. path: ${vFile.absolutePath}") - vFile.delete() - } - } + putDebug( + "ImageProvider: decode bitmap failed. path: ${vFile.absolutePath}\n$it", + it + ) }.getOrDefault(errorBitmap) }