gpt4 book ai didi

Android 从内部/外部存储中选择图像

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

我正在尝试将设备内部和外部存储器中的图像添加到我的应用程序中。我能够打开图库 Intent 并获取文件的路径,但随后我无法将其转换为 ImageView 的位图。以下是调用图库的图标的 onClick 监听器的代码:

icoGallery = (ImageView) findViewById(R.id.icoGallery);
icoGallery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent galleryIntent = new Intent(Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
galleryIntent.setType("image/*");
startActivityForResult(galleryIntent, RESULT_LOAD_IMAGE);
}
});

这是 onActivitResult 的代码:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);

if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null !=data){
Uri selectedImageUri = data.getData();
String[] projection = {MediaStore.Images.Media.DATA};
@SuppressWarnings("deprecation")
Cursor cursor = getContentResolver().query(selectedImageUri, projection, null, null, null);
cursor.moveToFirst();

int column_index = cursor.getColumnIndex(projection[0]);
imagePath = cursor.getString(column_index);
cursor.close();

imageFile = new File(imagePath);
if (imageFile.exists()){
Bitmap imageBitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath());
imgPhoto.setImageBitmap(imageBitmap);
}

} else {
Toast.makeText(context, "You have not selected and image", Toast.LENGTH_SHORT).show();
}
}

我已将以下权限添加到 list 中:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

我不断收到以下错误

E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/DCIM/Camera/20170215_152240.jpg: open failed: EACCES (Permission denied)

我认为它失败的部分原因是该设备只有内部存储。有没有一种方法可以从本地存储或外部存储的设备添加图像?或者我是否必须创建一个函数来询问用户是否要使用内部或外部存储?

提前致谢:)

编辑:该错误是由于未初始化 ImageView 引起的。但是,从 Gallery Activity 返回并返回文件的路径后,图像不会显示在 ImageView 上。它会更改为背景颜色。

最佳答案

您可以将Uri直接设置为ImageView,如下所示:

Uri selectedImageUri = data.getData();
imageView.setImageURI(selectedImageUri);

然后从ImageView中获取Bitmap:

 Drawable drawable =  imageView.getDrawable();
Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();

关于Android 从内部/外部存储中选择图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42263816/

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