diff --git a/app/src/main/java/io/legado/app/data/entities/Book.kt b/app/src/main/java/io/legado/app/data/entities/Book.kt index 449d6eacc..d5ff08514 100644 --- a/app/src/main/java/io/legado/app/data/entities/Book.kt +++ b/app/src/main/java/io/legado/app/data/entities/Book.kt @@ -202,7 +202,8 @@ data class Book( if (useReplaceRule != null) { return useReplaceRule } - if (type == BookType.image) { + //图片类书源 epub本地 默认关闭净化 + if (type == BookType.image || isEpub()) { return false } return AppConfig.replaceEnableDefault diff --git a/app/src/main/java/io/legado/app/help/BookHelp.kt b/app/src/main/java/io/legado/app/help/BookHelp.kt index 7e68c778c..0d607a5f1 100644 --- a/app/src/main/java/io/legado/app/help/BookHelp.kt +++ b/app/src/main/java/io/legado/app/help/BookHelp.kt @@ -144,7 +144,9 @@ object BookHelp { fun getImageSuffix(src: String): String { var suffix = src.substringAfterLast(".").substringBefore(",") - if (suffix.length > 5) { + //检查截取的后缀字符是否合法 [a-zA-Z0-9] + val fileSuffixRegex = Regex("^[a-z0-9]+$", RegexOption.IGNORE_CASE) + if (suffix.length > 5 || !suffix.matches(fileSuffixRegex)) { suffix = "jpg" } return suffix diff --git a/app/src/main/java/io/legado/app/model/localBook/EpubFile.kt b/app/src/main/java/io/legado/app/model/localBook/EpubFile.kt index 5d4d36e96..b12e0726e 100644 --- a/app/src/main/java/io/legado/app/model/localBook/EpubFile.kt +++ b/app/src/main/java/io/legado/app/model/localBook/EpubFile.kt @@ -33,7 +33,7 @@ class EpubFile(var book: Book) { if (eFile == null || eFile?.book?.bookUrl != book.bookUrl) { eFile = EpubFile(book) //对于Epub文件默认不启用替换 - book.setUseReplaceRule(false) + //io.legado.app.data.entities.Book getUseReplaceRule return eFile!! } eFile?.book = book 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 549372c51..19dd436f0 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 @@ -13,8 +13,7 @@ import io.legado.app.help.BookHelp import io.legado.app.help.config.AppConfig 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.* import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.withContext import splitties.init.appCtx @@ -113,6 +112,11 @@ object ImageProvider { width: Int, height: Int? = null ): Bitmap { + //src为空白时 可能被净化替换掉了 或者规则失效 + if (book.getUseReplaceRule() && src.isBlank()) { + book.setUseReplaceRule(false) + appCtx.toastOnUi(R.string.error_image_url_empty) + } val vFile = BookHelp.getImage(book, src) if (!vFile.exists()) return errorBitmap //epub文件提供图片链接是相对链接,同时阅读多个epub文件,缓存命中错误 @@ -122,7 +126,7 @@ object ImageProvider { @Suppress("BlockingMethodInNonBlockingContext") return kotlin.runCatching { val bitmap = BitmapUtils.decodeBitmap(vFile.absolutePath, width, height) - ?: throw NoStackTraceException("解析图片失败") + ?: throw NoStackTraceException(appCtx.getString(R.string.error_decode_bitmap)) bitmapLruCache.put(vFile.absolutePath, bitmap) bitmap }.onFailure { diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 6e95b867d..5827eba82 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -993,4 +993,6 @@ bitmap cache size Export Picture Files + Fail to decode bitmap + Image url is empty, check replacement rules diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index aad299b97..88570cfdc 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -996,4 +996,6 @@ bitmap cache size Export Picture Files + Fail to decode bitmap + Image url is empty, check replacement rules diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 6aa240a76..ee55c893a 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -996,4 +996,6 @@ bitmap cache size Export Picture Files + Fail to decode bitmap + Image url is empty, check replacement rules diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 32b479fb6..22c20f729 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -993,4 +993,6 @@ 图片绘制缓存 TXT导出图片 + 图片解码失败 + 图片链接为空,检查替换净化规则 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index bb8b1d278..963cff29e 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -995,4 +995,6 @@ 圖片繪製快取 TXT匯出圖片 + 图片解码失败 + 图片链接为空,检查替换净化规则 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 216791d7e..a4727df79 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -995,4 +995,6 @@ 图片绘制缓存 TXT导出图片 + 图片解码失败 + 图片链接为空,检查替换净化规则 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f94211986..d6905d954 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -996,4 +996,6 @@ bitmap cache size Export Picture Files + Fail to decode bitmap + Image url is empty, check replacement rules