From a957714de551f08535f883b040d2383961d64e7d Mon Sep 17 00:00:00 2001 From: kunfei Date: Wed, 16 Mar 2022 09:57:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96dataUri=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/help/glide/ImageLoader.kt | 11 +++-------- .../main/java/io/legado/app/model/webBook/BookInfo.kt | 7 ++++++- .../main/java/io/legado/app/model/webBook/BookList.kt | 8 ++++++-- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/glide/ImageLoader.kt b/app/src/main/java/io/legado/app/help/glide/ImageLoader.kt index 11fab8a28..aca00cd6a 100644 --- a/app/src/main/java/io/legado/app/help/glide/ImageLoader.kt +++ b/app/src/main/java/io/legado/app/help/glide/ImageLoader.kt @@ -4,7 +4,6 @@ import android.content.Context import android.graphics.Bitmap import android.graphics.drawable.Drawable import android.net.Uri -import android.util.Base64 import androidx.annotation.DrawableRes import com.bumptech.glide.RequestBuilder import io.legado.app.constant.AppPattern.dataUriRegex @@ -20,16 +19,12 @@ object ImageLoader { * 自动判断path类型 */ fun load(context: Context, path: String?): RequestBuilder { - val dataUriFindResult = dataUriRegex.find(path ?: "") return when { path.isNullOrEmpty() -> GlideApp.with(context).load(path) - dataUriFindResult != null -> kotlin.runCatching { - val dataUriBase64 = dataUriFindResult.groupValues[1] - val byteArray = Base64.decode(dataUriBase64, Base64.DEFAULT) - GlideApp.with(context).load(byteArray) - }.getOrDefault( + dataUriRegex.find(path) != null -> { + //glide内部已经实现dataUri解析 GlideApp.with(context).load(path) - ) + } path.isAbsUrl() -> { kotlin.runCatching { val url = AnalyzeUrl(path).getGlideUrl() diff --git a/app/src/main/java/io/legado/app/model/webBook/BookInfo.kt b/app/src/main/java/io/legado/app/model/webBook/BookInfo.kt index 4ce0ae765..0cdba44a5 100644 --- a/app/src/main/java/io/legado/app/model/webBook/BookInfo.kt +++ b/app/src/main/java/io/legado/app/model/webBook/BookInfo.kt @@ -127,7 +127,12 @@ object BookInfo { Debug.log(bookSource.bookSourceUrl, "┌获取封面链接") try { analyzeRule.getString(infoRule.coverUrl).let { - if (it.isNotEmpty()) book.coverUrl = NetworkUtils.getAbsoluteURL(redirectUrl, it) + if (it.startsWith("data:")) { + book.coverUrl = it + } else if (it.isNotEmpty()) { + book.coverUrl = + NetworkUtils.getAbsoluteURL(baseUrl, it) + } Debug.log(bookSource.bookSourceUrl, "└${it}") } } catch (e: Exception) { diff --git a/app/src/main/java/io/legado/app/model/webBook/BookList.kt b/app/src/main/java/io/legado/app/model/webBook/BookList.kt index e7597ff87..6e04bad03 100644 --- a/app/src/main/java/io/legado/app/model/webBook/BookList.kt +++ b/app/src/main/java/io/legado/app/model/webBook/BookList.kt @@ -229,8 +229,12 @@ object BookList { Debug.log(bookSource.bookSourceUrl, "┌获取封面链接", log) try { analyzeRule.getString(ruleCoverUrl).let { - if (it.isNotEmpty()) searchBook.coverUrl = - NetworkUtils.getAbsoluteURL(baseUrl, it) + if (it.startsWith("data:")) { + searchBook.coverUrl = it + } else if (it.isNotEmpty()) { + searchBook.coverUrl = + NetworkUtils.getAbsoluteURL(baseUrl, it) + } } Debug.log(bookSource.bookSourceUrl, "└${searchBook.coverUrl}", log) } catch (e: java.lang.Exception) {