diff --git a/app/src/main/kotlin/com/hippo/ehviewer/image/Image.kt b/app/src/main/kotlin/com/hippo/ehviewer/image/Image.kt index dd3af861c..7c3aa6c49 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/image/Image.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/image/Image.kt @@ -32,8 +32,9 @@ import coil3.request.CachePolicy import coil3.request.ErrorResult import coil3.request.SuccessResult import coil3.request.allowHardware -import coil3.size.Dimension +import coil3.request.maxBitmapSize import coil3.size.Precision +import coil3.size.Scale import coil3.size.Size import coil3.size.SizeResolver import com.ehviewer.core.files.openFileDescriptor @@ -90,8 +91,10 @@ class Image private constructor(image: CoilImage, private val src: ImageSource) } companion object { - private val targetWidth = appCtx.resources.displayMetrics.widthPixels * 3 - private val sizeResolver = SizeResolver(Size(targetWidth, Dimension.Undefined)) + private val sizeResolver = with(appCtx.resources.displayMetrics) { + val targetSize = minOf(widthPixels, heightPixels) * 4 / 3 + SizeResolver(Size(targetSize, targetSize)) + } private suspend fun Either.decodeCoil(checkExtraneousAds: Boolean): CoilImage { val request = with(appCtx) { @@ -99,7 +102,9 @@ class Image private constructor(image: CoilImage, private val src: ImageSource) onLeft { data(it.source) } onRight { data(it.source.toUri()) } size(sizeResolver) + scale(Scale.FILL) precision(Precision.INEXACT) + maxBitmapSize(Size.ORIGINAL) allowHardware(false) hardwareThreshold(Settings.hardwareBitmapThreshold.value) maybeCropBorder(Settings.cropBorder.value)