From 2ef8dcbdfd8b17df010aea75c5140db90754a143 Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Mon, 4 Nov 2024 15:13:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=B0=83=E6=95=B4=20hash=20=E6=91=98?= =?UTF-8?q?=E5=8F=96=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gh/gamecenter/common/utils/ImageUtils.kt | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/ImageUtils.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/ImageUtils.kt index 651de9b231..b4b5003a94 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/ImageUtils.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/ImageUtils.kt @@ -56,8 +56,8 @@ import kotlin.system.measureTimeMillis object ImageUtils { private const val TAG = "ImageUtils" - private const val BLUR_HASH_PREFIX = "blurhash" - private const val BLUR_HASH_REGEX = "blurhash_([A-Za-z0-9+=]+)" + private const val THUMBHASH_PREFIX = "thumbhash" + private const val THUMBHASH_REGEX = "(?<=thumbhash_)([^.]+)" private const val PIC_MAX_FILE_SIZE: Long = 10 * 1024 * 1024 @@ -65,7 +65,7 @@ object ImageUtils { private val LARGE_ANIMATED_ICON_SIZE by lazy { 80F.dip2px() } private val STANDARD_ANIMATED_ICON_SIZE by lazy { 60F.dip2px() } - private val blurHashRegex by lazy { Regex(BLUR_HASH_REGEX) } + private val thumbHashRegex by lazy { Regex(THUMBHASH_REGEX) } val TAG_TARGET_WIDTH by lazy { R.dimen.width_placeholder } val TAG_IS_GAME_ICON by lazy { R.dimen.game_icon_placeholder } @@ -333,7 +333,9 @@ object ImageUtils { var lowResUrl = "" var highResUrl = "" - var hash = "mhgKFIa+qma/mHlnmHq0BzPlBA==" + val sampleUrl = "https://and-static.ghzs.com/image/game/home/setting/2021/09/28/6152ccde52f673122f10a110_thumbhash_mRgKFIa-qma_mHlnmHq0BzPVBQ.jpeg" + + var hash = getThumbHashIfValid(sampleUrl) // 找同一图片地址已加载过的图片作为低质量预览图(字符串操作耗时不短,所以这里放到了独立的子线程来处理) // TODO 根据实际请求大小(w_width)来避免小图用大图作为低质量图片 @@ -819,8 +821,13 @@ object ImageUtils { } } - private fun generateThumbHashDrawable(hash: String, width: Int, height: Int): ThumbHashDrawable { - return ThumbHashDrawable(hash, width, height) + private fun getThumbHashIfValid(url: String) : String { + return if (url.contains(THUMBHASH_PREFIX)) { + var hash = thumbHashRegex.find(url)?.groups?.get(1)?.value ?: "" + hash.replace("-", "+").replace("_", "/") + } else { + "" + } } }