使用ActivityResultLauncher<>
从图库中选择图像后,如何将图像裁剪为1:1 ?有没有办法做到这一点,而不使用库(因为我已经在我的项目中使用了很多库)。下面是我的代码:
ActivityResultLauncher<String> activityResultLauncher =
registerForActivityResult(new ActivityResultContracts.GetContent(),
new ActivityResultCallback<Uri>() {
@Override
public void onActivityResult(Uri result) {
if (result != null) {
Picasso.with(MainActivity.this).load(result).into(shapeableImageView);
}
}
});
private void openImagePicker() {
activityResultLauncher.launch("image/*");
}
更新:
我在api: 16,我试图使用一些裁剪库,但有些是在api: 19和其他一个(Android图像裁剪器)不工作。我不知道我用什么代码来裁剪ActivityResultLauncher<>
(没有库)的图像。我是android开发的新手,如果我错了,请告诉我。
你可以使用Github Library,它会帮助你。
链接在这里。
ImagePicker.Companion.with(this)
.crop() //Crop image(Optional), Check Customization for more option
.compress(1024) //Final image size will be less than 1 MB(Optional)
.maxResultSize(1080, 1080)
.start();//Final image resolution will be less than 1080 x 1080(Optional)
On Activity Result.
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (data != null) {
selectedFileURI = data.getData();
if (selectedFileURI != null && !Objects.requireNonNull(selectedFileURI.getPath()).isEmpty()) {
btnUpdate.setVisibility(View.GONE);
civUser.setImageURI(selectedFileURI);
Glide.with(context).load(selectedFileURI).into(civUser);
btnUploadDp.setVisibility(View.VISIBLE);
} else {
Functions.showSnackBar(context, "Cannot Get this Image");
}
}
}
}