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 { + "" + } } }