fix: 调整 hash 摘取实现

This commit is contained in:
chenjuntao
2024-11-04 15:13:42 +08:00
parent 7b0fe13804
commit 2ef8dcbdfd

View File

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