java - 裁剪后如何从图库中选择图像并保存在应用程序中?
问题描述
我是 Android 开发的新手,我尽力从图库中挑选一张图片并在裁剪后保存在应用程序中,但我失败了。请帮我解决这个问题。我试图混合不同的代码,但没有什么对我有用。
if (resultCode == RESULT_OK) {
//Uri photoUri = data.getData();
//if (photoUri != null) {
// photoPickerIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, uri);
CropImage.activity(android.net.Uri.parse(data.getDataString()))
.setAspectRatio(1,1)
.setFixAspectRatio(true)
.start(activity);
CropImage.ActivityResult result1 = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK) {
iv.setImageURI(result1.getUri());
} else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
Exception error = result1.getError();
Log.d(TAG, "onActivityResult: " + error.getMessage());
}
//currentImage = MediaStore.Images.Media.getBitmap(this.getContentResolver(), photoUri);
//selectedImage.setImageBitmap(currentImage);
// }
解决方案
首先在你的项目 Gradle.built(app:odle) 文件中添加一个依赖项
喜欢
dependencies {
implementaion 'com.theartofdev.edmodo:android-image-cropper:2.8.+'
}
之后在manifest文件中添加以下两个权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
在你的类中创建一个常量 private static final int REQUEST_FOR_GALLARY = 1; 你会需要这个。
之后,将以下代码放入您的按钮,您可以在该按钮上单击以打开图库或您正在使用的任何内容。
Intent gallaryIntent = new Intent();
gallaryIntent.setAction(Intent.ACTION_GET_CONTENT);
gallaryIntent.setType("image/*");
startActivityForResult(gallaryIntent, REQUEST_FOR_GALLARY);
之后覆盖 Activity 类的方法 onActivityResult Like
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent
data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_FOR_GALLARY && resultCode == RESULT_OK && data !=
null) {
Uri imageUri = data.getData();
CropImage.activity()
.setGuidelines(CropImageView.Guidelines.ON)
.start(this);
}
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK) {
Uri resultUri = result.getUri();
//Save image wherever you want to save it
}
}
}
现在根据您的 Recuirement 更改您的代码并将图像保存在您想要存储的任何位置。
推荐阅读
- python - 从另一个模块修改一个模块的属性是不好的做法吗?
- git - 如何将更改提交到 Gerrit 中的主分支?
- c# - 使用 Nuget ComponentModel.Annotations 替换程序集引用 ComponentModel.DataAnnotations 的运行时错误
- r - 使用 geom_boxplot() 在整洁的数据框中更改箱线图的顺序
- python - 为每个超过最大值的 X 堆叠“点”
- http - adding 1 user with htpasswd in 2 different servers using ssh connection
- ansible - 使用 Ansible 2.9.6 更改 VMware VM 端口组
- javascript - 应用“无返回等待”时,函数是否应该保持异步?
- sql - 如何在SQL中查找两次之间不存在的数据
- html - NavBar Bootstrap 4,如何不重复隐藏手机屏幕中的某些项目?