mirror of
https://github.com/google-ai-edge/gallery.git
synced 2025-07-05 06:00:31 -04:00
- Try to limit the image size taken by the camera in ask image task
This commit is contained in:
parent
61ee4fd5d7
commit
ebb605131d
1 changed files with 20 additions and 2 deletions
|
@ -24,6 +24,7 @@ import android.graphics.BitmapFactory
|
||||||
import android.graphics.Matrix
|
import android.graphics.Matrix
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
import android.util.Size
|
||||||
import androidx.activity.compose.rememberLauncherForActivityResult
|
import androidx.activity.compose.rememberLauncherForActivityResult
|
||||||
import androidx.activity.result.PickVisualMediaRequest
|
import androidx.activity.result.PickVisualMediaRequest
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
|
@ -32,6 +33,9 @@ import androidx.camera.core.CameraControl
|
||||||
import androidx.camera.core.CameraSelector
|
import androidx.camera.core.CameraSelector
|
||||||
import androidx.camera.core.ImageCapture
|
import androidx.camera.core.ImageCapture
|
||||||
import androidx.camera.core.ImageProxy
|
import androidx.camera.core.ImageProxy
|
||||||
|
import androidx.camera.core.resolutionselector.AspectRatioStrategy
|
||||||
|
import androidx.camera.core.resolutionselector.ResolutionSelector
|
||||||
|
import androidx.camera.core.resolutionselector.ResolutionStrategy
|
||||||
import androidx.camera.lifecycle.ProcessCameraProvider
|
import androidx.camera.lifecycle.ProcessCameraProvider
|
||||||
import androidx.camera.lifecycle.awaitInstance
|
import androidx.camera.lifecycle.awaitInstance
|
||||||
import androidx.camera.view.PreviewView
|
import androidx.camera.view.PreviewView
|
||||||
|
@ -404,7 +408,20 @@ fun MessageInputText(
|
||||||
|
|
||||||
val lifecycleOwner = LocalLifecycleOwner.current
|
val lifecycleOwner = LocalLifecycleOwner.current
|
||||||
val previewUseCase = remember { androidx.camera.core.Preview.Builder().build() }
|
val previewUseCase = remember { androidx.camera.core.Preview.Builder().build() }
|
||||||
val imageCaptureUseCase = remember { ImageCapture.Builder().build() }
|
val imageCaptureUseCase = remember {
|
||||||
|
// Try to limit the image size.
|
||||||
|
val preferredSize = Size(512, 512)
|
||||||
|
val resolutionStrategy = ResolutionStrategy(
|
||||||
|
preferredSize,
|
||||||
|
ResolutionStrategy.FALLBACK_RULE_CLOSEST_HIGHER_THEN_LOWER
|
||||||
|
)
|
||||||
|
val resolutionSelector = ResolutionSelector.Builder()
|
||||||
|
.setResolutionStrategy(resolutionStrategy)
|
||||||
|
.setAspectRatioStrategy(AspectRatioStrategy.RATIO_4_3_FALLBACK_AUTO_STRATEGY)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
ImageCapture.Builder().setResolutionSelector(resolutionSelector).build()
|
||||||
|
}
|
||||||
var cameraProvider by remember { mutableStateOf<ProcessCameraProvider?>(null) }
|
var cameraProvider by remember { mutableStateOf<ProcessCameraProvider?>(null) }
|
||||||
var cameraControl by remember { mutableStateOf<CameraControl?>(null) }
|
var cameraControl by remember { mutableStateOf<CameraControl?>(null) }
|
||||||
val localContext = LocalContext.current
|
val localContext = LocalContext.current
|
||||||
|
@ -501,6 +518,7 @@ fun MessageInputText(
|
||||||
val matrix = Matrix().apply {
|
val matrix = Matrix().apply {
|
||||||
postRotate(rotation.toFloat())
|
postRotate(rotation.toFloat())
|
||||||
}
|
}
|
||||||
|
Log.d(TAG, "image size: ${bitmap.width}, ${bitmap.height}")
|
||||||
Bitmap.createBitmap(bitmap, 0, 0, bitmap.width, bitmap.height, matrix, true)
|
Bitmap.createBitmap(bitmap, 0, 0, bitmap.width, bitmap.height, matrix, true)
|
||||||
} else bitmap
|
} else bitmap
|
||||||
updatePickedImages(bitmap)
|
updatePickedImages(bitmap)
|
||||||
|
@ -590,7 +608,7 @@ private fun rotateImageIfNecessary(bitmap: Bitmap, rotateForPortrait: Boolean =
|
||||||
|
|
||||||
private fun checkFrontCamera(context: Context, callback: (Boolean) -> Unit) {
|
private fun checkFrontCamera(context: Context, callback: (Boolean) -> Unit) {
|
||||||
val cameraProviderFuture = ProcessCameraProvider.getInstance(context)
|
val cameraProviderFuture = ProcessCameraProvider.getInstance(context)
|
||||||
cameraProviderFuture.addListener(Runnable {
|
cameraProviderFuture.addListener({
|
||||||
val cameraProvider = cameraProviderFuture.get()
|
val cameraProvider = cameraProviderFuture.get()
|
||||||
try {
|
try {
|
||||||
// Attempt to select the default front camera
|
// Attempt to select the default front camera
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue