Ensure cropped images meet minimum width/height

This commit is contained in:
FooIbar committed 2024-01-02 18:41:53 +08:00
1 parent 5d116d9477
commit 86ef8f2b48
1 file changed
+5 -5
@@ -56,17 +56,17 @@ import com.hippo.unifile.UniFile
import java.nio.ByteBuffer
import splitties.init.appCtx
private val CropAspect = 0.1..100.0
private const val CROP_THRESHOLD = 0.8f
class Image private constructor(image: CoilImage, private val src: AutoCloseable) {
val size = image.size
private val intrinsicRect = image.run { Rect(0, 0, width, height) }
val rect: Rect = if (Settings.cropBorder.value && image is BitmapImage) {
val bitmap = image.bitmap
val array = detectBorder(bitmap)
val array = detectBorder(image.bitmap)
val r = Rect(array[0], array[1], array[2], array[3])
val aspectAfterCrop = r.height().toFloat() / r.width()
if (aspectAfterCrop in CropAspect) r else intrinsicRect
val minWidth = image.width * CROP_THRESHOLD
val minHeight = image.height * CROP_THRESHOLD
if (r.width() > minWidth && r.height() > minHeight) r else intrinsicRect
} else {
intrinsicRect
}