gpt4 book ai didi

android - 如何直接将Image传入ArthurHub/Android-Image-Cropper进行裁剪

转载 作者:行者123 更新时间:2023-12-05 00:00:44 26 4
gpt4 key购买 nike

我正在为我的 UI、 Activity 结果契约(Contract)和 ArthutHub Android Image Cropper Library 使用 Jetpack compose在我的应用程序中裁剪图像。使用以下代码一切正常:

val (result, launcher) = setUpContentPhotoCropImageIntent()//this activity result 
//contracts in launched on a button press
result.value?.let {
//code here to save the image and show it in the UI, upload to cloud storage etc.
}

@Composable
fun setUpContentPhotoCropImageIntent(): Pair<MutableState<Uri?>,
ManagedActivityResultLauncher<Any?, Uri?>> {

val cropActivityResultContract = object : ActivityResultContract<Any?, Uri?>() {

override fun createIntent(context: Context, input: Any?): Intent {
CropImage.isExplicitCameraPermissionRequired(context)
CropImage.getPickImageChooserIntent(context)
return CropImage
.activity()
.setActivityTitle("Choose Photo")
.setCropMenuCropButtonTitle("Select")
.setAllowRotation(true)
.setGuidelines(CropImageView.Guidelines.ON_TOUCH)
.setCropShape(CropImageView.CropShape.RECTANGLE)
.setAllowFlipping(true)
.setOutputCompressQuality(100)
.setFixAspectRatio(true)
.setMaxCropResultSize(
2000,
2000
)
.getIntent(context)
}

override fun parseResult(resultCode: Int, intent: Intent?): Uri? {
return CropImage.getActivityResult(intent)?.uri
}

}

val result = remember { mutableStateOf<Uri?>(null) }
val launcher = rememberLauncherForActivityResult(cropActivityResultContract) {
result.value = it
}

return Pair(result, launcher)

}

因此,通过这种方法,库不仅可以裁剪图像,还可以通过相机/画廊捕捉图像。我想自己传递一个位图图像(通过使用内置的 Android API 获取图像到 Take Pictureget Gallery Image )并使用这个库来裁剪,这样我就可以有 2 个专用按钮供用户使用拍摄照片或从图库中选择。

我现在有了图像,我希望这个库为我裁剪它,如何将图像传递给它?

最佳答案

尽量使用最新的库https://github.com/CanHub/Android-Image-Cropper

你可以像这样传递图像:

class MainActivity {
private val cropImage = registerForActivityResult(CropImageContract()) { result ->
if (result.isSuccessful) {
// use the returned uri
val uriContent = result.uriContent
val uriFilePath = result.getUriFilePath(context) // optional usage
} else {
// an error occurred
val exception = result.error
}
}

private fun startCrop() {
// start cropping activity for pre-acquired image saved on the device and customize settings
cropImage.launch(
options(uri = imageUri) {
setGuidelines(Guidelines.ON)
setOutputCompressFormat(CompressFormat.PNG)
}
)
}
}

关于android - 如何直接将Image传入ArthurHub/Android-Image-Cropper进行裁剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70472972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com