mr0xf00 / easycrop

Image cropper for jetpack compose
Apache License 2.0
96 stars 20 forks source link

CropperPreview bug #13

Closed hritwikjohri closed 3 months ago

hritwikjohri commented 3 months ago

When using CropperPreview separately, it has a bug that the guidelines stop changing position even when any other action is performed in background or foreground.

@Composable fun Crop(modifier: Modifier) { val primaryColor = MaterialTheme.colorScheme.primary val lightShade = Color( ColorUtils.blendARGB( primaryColor.toArgb(), Color.White.toArgb(), 0.7f ) ) val darkShade = Color( ColorUtils.blendARGB( primaryColor.toArgb(), Color.Black.toArgb(), 0.3f ) ) val imageCropper = rememberImageCropper() val scope = rememberCoroutineScope() val context = LocalContext.current var selectedImage by remember { mutableStateOf<ImageBitmap?>(null) } var error by remember { mutableStateOf<CropError?>(null) } val imagePicker = rememberImagePicker(onImage = { uri -> scope.launch { when (val result = imageCropper.crop(uri, context)) { CropResult.Cancelled -> {} is CropError -> error = result is CropResult.Success -> { selectedImage = result.bitmap } } } }) val state = imageCropper.cropState Box( contentAlignment = Alignment.Center, modifier = modifier.fillMaxSize() ) { IconButton( modifier = Modifier.fillMaxSize(0.5f), onClick = { imagePicker.pick() } ) { Icon( painter = painterResource(id = R.drawable.add), contentDescription = "add from internal", tint = lightShade, modifier = Modifier .fillMaxSize() .alpha(0.5f) ) } state?.let { CropperPreview( state = state, modifier = Modifier .fillMaxSize() ) } } }