@@ -24,6 +24,7 @@ import android.graphics.BitmapFactory
2424import android.graphics.Matrix
2525import android.net.Uri
2626import android.util.Log
27+ import android.util.Size
2728import androidx.activity.compose.rememberLauncherForActivityResult
2829import androidx.activity.result.PickVisualMediaRequest
2930import androidx.activity.result.contract.ActivityResultContracts
@@ -32,6 +33,9 @@ import androidx.camera.core.CameraControl
3233import androidx.camera.core.CameraSelector
3334import androidx.camera.core.ImageCapture
3435import androidx.camera.core.ImageProxy
36+ import androidx.camera.core.resolutionselector.AspectRatioStrategy
37+ import androidx.camera.core.resolutionselector.ResolutionSelector
38+ import androidx.camera.core.resolutionselector.ResolutionStrategy
3539import androidx.camera.lifecycle.ProcessCameraProvider
3640import androidx.camera.lifecycle.awaitInstance
3741import androidx.camera.view.PreviewView
@@ -404,7 +408,20 @@ fun MessageInputText(
404408
405409 val lifecycleOwner = LocalLifecycleOwner .current
406410 val previewUseCase = remember { androidx.camera.core.Preview .Builder ().build() }
407- val imageCaptureUseCase = remember { ImageCapture .Builder ().build() }
411+ val imageCaptureUseCase = remember {
412+ // Try to limit the image size.
413+ val preferredSize = Size (512 , 512 )
414+ val resolutionStrategy = ResolutionStrategy (
415+ preferredSize,
416+ ResolutionStrategy .FALLBACK_RULE_CLOSEST_HIGHER_THEN_LOWER
417+ )
418+ val resolutionSelector = ResolutionSelector .Builder ()
419+ .setResolutionStrategy(resolutionStrategy)
420+ .setAspectRatioStrategy(AspectRatioStrategy .RATIO_4_3_FALLBACK_AUTO_STRATEGY )
421+ .build()
422+
423+ ImageCapture .Builder ().setResolutionSelector(resolutionSelector).build()
424+ }
408425 var cameraProvider by remember { mutableStateOf<ProcessCameraProvider ?>(null ) }
409426 var cameraControl by remember { mutableStateOf<CameraControl ?>(null ) }
410427 val localContext = LocalContext .current
@@ -501,6 +518,7 @@ fun MessageInputText(
501518 val matrix = Matrix ().apply {
502519 postRotate(rotation.toFloat())
503520 }
521+ Log .d(TAG , " image size: ${bitmap.width} , ${bitmap.height} " )
504522 Bitmap .createBitmap(bitmap, 0 , 0 , bitmap.width, bitmap.height, matrix, true )
505523 } else bitmap
506524 updatePickedImages(bitmap)
@@ -590,7 +608,7 @@ private fun rotateImageIfNecessary(bitmap: Bitmap, rotateForPortrait: Boolean =
590608
591609private fun checkFrontCamera (context : Context , callback : (Boolean ) -> Unit ) {
592610 val cameraProviderFuture = ProcessCameraProvider .getInstance(context)
593- cameraProviderFuture.addListener(Runnable {
611+ cameraProviderFuture.addListener({
594612 val cameraProvider = cameraProviderFuture.get()
595613 try {
596614 // Attempt to select the default front camera
0 commit comments