diff --git a/compressor/src/main/java/id/zelory/compressor/Util.kt b/compressor/src/main/java/id/zelory/compressor/Util.kt index bcb1cb3..97bdb57 100644 --- a/compressor/src/main/java/id/zelory/compressor/Util.kt +++ b/compressor/src/main/java/id/zelory/compressor/Util.kt @@ -38,10 +38,17 @@ fun decodeSampledBitmapFromFile(imageFile: File, reqWidth: Int, reqHeight: Int): return BitmapFactory.Options().run { inJustDecodeBounds = true BitmapFactory.decodeFile(imageFile.absolutePath, this) - inSampleSize = calculateInSampleSize(this, reqWidth, reqHeight) - inJustDecodeBounds = false + val outRatio = outWidth.toFloat() / outHeight.toFloat() + val reqRatio = reqWidth.toFloat() / reqHeight.toFloat() + if (outRatio > reqRatio) { + inDensity = outHeight + inTargetDensity = reqHeight * inSampleSize + } else if (outRatio <= reqRatio) { + inDensity = outWidth + inTargetDensity = reqWidth * inSampleSize + } BitmapFactory.decodeFile(imageFile.absolutePath, this) } } diff --git a/compressor/src/main/java/id/zelory/compressor/constraint/ResolutionConstraint.kt b/compressor/src/main/java/id/zelory/compressor/constraint/ResolutionConstraint.kt index 9b1b75f..d8db87c 100644 --- a/compressor/src/main/java/id/zelory/compressor/constraint/ResolutionConstraint.kt +++ b/compressor/src/main/java/id/zelory/compressor/constraint/ResolutionConstraint.kt @@ -19,7 +19,7 @@ class ResolutionConstraint(private val width: Int, private val height: Int) : Co return BitmapFactory.Options().run { inJustDecodeBounds = true BitmapFactory.decodeFile(imageFile.absolutePath, this) - calculateInSampleSize(this, width, height) <= 1 + outWidth - width <= 0 || outHeight - height <= 0 } }