ReImplement imageSearch max size restrict

This commit is contained in:
tarsin committed 2023-01-30 15:06:22 +08:00
1 parent d7f050efc4
commit 7a03fb53ea
3 files changed
+23 -7

No files matched your search

+19 -4
View File
@@ -26,6 +26,7 @@ import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
import android.os.Build
import com.hippo.ehviewer.EhApplication
import com.hippo.ehviewer.R
import java.nio.ByteBuffer
import kotlin.math.min
@@ -38,10 +39,7 @@ class Image private constructor(source: Source, private var src: ByteBufferSourc
}
decoder.setTargetColorSpace(colorSpace)
decoder.setTargetSampleSize(
min(
info.size.width / (2 * screenWidth),
info.size.height / (2 * screenHeight)
).coerceAtLeast(1)
calculateSampleSize(info, 2 * screenHeight, 2 * screenWidth)
)
}.also {
(it as? BitmapDrawable)?.run {
@@ -65,6 +63,23 @@ class Image private constructor(source: Source, private var src: ByteBufferSourc
}
companion object {
fun calculateSampleSize(info: ImageInfo, targetHeight: Int, targetWeight: Int): Int {
return min(
info.size.width / targetWeight,
info.size.height / targetHeight
).coerceAtLeast(1)
}
private val imageSearchMaxSize =
EhApplication.application.resources.getDimensionPixelOffset(R.dimen.image_search_max_size)
@JvmStatic
val imageSearchDecoderSampleListener =
ImageDecoder.OnHeaderDecodedListener { decoder, info, _ ->
decoder.setTargetSampleSize(
calculateSampleSize(info, imageSearchMaxSize, imageSearchMaxSize)
)
}
val screenWidth = EhApplication.application.resources.displayMetrics.widthPixels
val screenHeight = EhApplication.application.resources.displayMetrics.heightPixels
val isWideColorGamut =