diff --git a/android-project/app/src/main/java/com/photobooth/app/MainActivity.kt b/android-project/app/src/main/java/com/photobooth/app/MainActivity.kt index f5ed4f8..165b610 100644 --- a/android-project/app/src/main/java/com/photobooth/app/MainActivity.kt +++ b/android-project/app/src/main/java/com/photobooth/app/MainActivity.kt @@ -89,8 +89,8 @@ class MainActivity : AppCompatActivity() { private fun updateBackgroundMode() { currentBackgroundMode = when { - selectedBgAssetPath != null -> BackgroundMode.AI_BLUR - blurIntensity > 0f || isPortraitBlurModeOpen -> BackgroundMode.HARDWARE_DOF + selectedBgAssetPath != null || blurIntensity > 0f -> BackgroundMode.AI_BLUR + isPortraitBlurModeOpen -> BackgroundMode.HARDWARE_DOF else -> BackgroundMode.DEFAULT } } @@ -1090,6 +1090,7 @@ class MainActivity : AppCompatActivity() { private fun setCurrentAttributeValue(value: Float) { if (currentAttribute == EditAttribute.PORTRAIT_BLUR) { blurIntensity = value.coerceIn(0f, 1f) + updateBackgroundMode() return } if (currentAttribute == EditAttribute.BG_REPLACE) return @@ -1767,13 +1768,6 @@ class MainActivity : AppCompatActivity() { cachedMaskHeight = h categoryMaskBuffer.rewind() - // Ở chế độ Portrait Blur thấu kính vật lý (selectedBgAssetPath == null), - // sau khi đã lưu cache mask để hỗ trợ xác định đối tượng chạm, - // ta bỏ qua hoàn toàn việc tạo mặt nạ alpha và làm mờ phông nền nhân tạo. - if (selectedBgAssetPath == null) { - return capturedImage - } - // Create and blur alpha mask with Touch-to-Focus class selection val focusClassId = if (userSelectedClassFocus >= 0) userSelectedClassFocus else -1 val alphaMask = FloatArray(w * h) @@ -1815,8 +1809,8 @@ class MainActivity : AppCompatActivity() { val bgPixels = IntArray(w * h) var blurredBg: android.graphics.Bitmap? = null if (blurIntensity > 0f) { - val opticalIntensity = Math.pow(blurIntensity.toDouble(), 2.5).toFloat() - val radius = (25 * opticalIntensity).toInt().coerceIn(1, 25) + val maxRadius = if (w <= 480) 15f else 75f + val radius = (2f + blurIntensity * maxRadius).toInt().coerceIn(1, 120) blurredBg = blurBitmap(baseBg, radius) blurredBg.getPixels(bgPixels, 0, w, 0, 0, w, h) } else { @@ -1943,8 +1937,8 @@ class MainActivity : AppCompatActivity() { val bgPixels = IntArray(w * h) var blurredBg: android.graphics.Bitmap? = null if (blurIntensity > 0f) { - val opticalIntensity = Math.pow(blurIntensity.toDouble(), 2.5).toFloat() - val radius = (40 * opticalIntensity).toInt().coerceIn(1, 40) + val maxRadius = if (w <= 480) 15f else 75f + val radius = (2f + blurIntensity * maxRadius).toInt().coerceIn(1, 120) blurredBg = blurBitmap(baseBg, radius) blurredBg.getPixels(bgPixels, 0, w, 0, 0, w, h) } else { @@ -2381,8 +2375,8 @@ class MainActivity : AppCompatActivity() { val bgPixels = IntArray(w * h) var blurredBg: android.graphics.Bitmap? = null if (blurIntensity > 0f) { - val opticalIntensity = Math.pow(blurIntensity.toDouble(), 2.5).toFloat() - val radius = (40 * opticalIntensity).toInt().coerceIn(1, 40) + val maxRadius = if (w <= 480) 15f else 75f + val radius = (2f + blurIntensity * maxRadius).toInt().coerceIn(1, 120) blurredBg = blurBitmap(baseBg, radius) blurredBg.getPixels(bgPixels, 0, w, 0, 0, w, h) } else {