当前位置: 首页 > 知识库问答 >
问题:

从Gallery Android加载图像的代码

曹泉
2023-03-14
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { //Browse Gallery is requested

        Uri selectedImage = data.getData();
        String[] filePathColumn = { MediaStore.Images.Media.DATA };

        Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String picturePath = cursor.getString(columnIndex);
        cursor.close();

        loadImage(picturePath);         //load picture according the path
        image_View.setImageBitmap(pic); //Show the selected picture
    }
}

从意图中获取选定图像的uri

String[]filePathColumn={mediaStore.images.media.data};

mediastore.images.media.data是常数。我不明白为什么不用String代替String[]

Cursor.MoveToFirst();

移动到图库中的第一张图片。

int columnIndex=Cursor.GetColumnIndex(FilePathColumn[0]);

谁能帮我检查一下我的解释是否正确,解释一下我不懂的那一行吗?多谢了。

共有1个答案

戚翰飞
2023-03-14

1-

Uri selectedImage = data.getData();

在这个语句中,您需要读取通过前面通过StartActivityForResult方法调用的另一个意图传递的数据。在这种情况下,您可能打开一个意图并让用户选择一个图像,然后图像的URI将返回给您,您可以使用GetData读取该图像。

2-

String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();

当您从数据库中读取所需的行时(在本例中,您可能只选择了一个图像),您需要移动光标以指向返回结果的第一个条目(行

5-

int columnIndex = cursor.getColumnIndex(filePathColumn[0]);

您需要知道需要访问哪个列来读取您想要的数据(在本例中是文件路径名)。因此,您询问cursorfile pathname的列索引是什么,它将返回列索引。当然,在这种情况下,它将始终为0,因为您只要求内容提供程序返回一列(file pathname),这样就不会再显示其他数据

String picturePath = cursor.getString(columnIndex);
 类似资料:
  • 它已经开始工作了,但今天我很惊讶,当我尝试分享链接时,Facebook没有显示来自og:image meta-tag的图像。 从facebook调试器: 图像在哪里?

  • 我正在使用Scene Builder2.0和eclipse Luna。在fxml文件中,我有我的场景的代码和图像。如果我在eclipse上测试这一点,一切都是正常的,但是如果我将它导出到可运行的jar中,然后运行它,我就会得到没有图像的窗口...以下是部分代码: 文件结构: 我觉得问题出在路径上,但我不知道这条路是怎么走的。加载程序代码: 初始化函数:

  • 我想从我的应用程序中的URL加载一个图像,所以我首先尝试使用Objective-C,它成功了,但是,使用Swift,我有一个编译错误: “imageWithData”不可用:使用对象构造“UIImage(数据:)” 我的职能: 在目标C中: 有人能给我解释一下为什么不能与Swift一起工作,以及我如何解决这个问题。

  • 我正在尝试加载存储在应用程序文件夹上的图像当我打开活动时,我从logcat收到了这个错误: 1-20 01:30:40.125 14331-14331/mx.eusaga。af W/ImageView:无法打开内容:content://mx.eusaga.af.fileprovider/imagenes/1-db384fa8-f28b-4595-abbf-d45d38fd4036.jpgjava.

  • 问题内容: 我想从我的应用程序中的URL加载图像,因此我首先尝试使用Objective-C,但是它可以正常工作,但是对于Swift,我遇到了编译错误: ‘imageWithData’不可用:使用对象构造’UIImage(data :)’ 我的功能: 在Objective-C中: 有人可以解释一下为什么Swift无法使用它,以及如何解决该问题。 问题答案: Xcode 8或更高版本•Swift 3或

  • 问题内容: 我想从目录中随机加载图像,并在某处有一个刷新整个页面的按钮。这是我现在拥有的当前代码: 问题在于它一次加载了所有40万张图像。我只想加载30个。目录中的30张随机图像。我尝试查找一些代码,例如将上面的内容修改为: 但是,它似乎绝对没有任何作用。因此,如果有人可以帮助我从该目录中获取30张随机照片进行加载,并具有某种类型的重新加载按钮,那将是非常有用的。 先感谢您 问题答案: 这是我的缓