获取图片路径并存储在SQLite Android

时间:2015-12-28 23:01:50

标签: java android image sqlite

我正在尝试获取用户从图库中选择的图像的路径。到目前为止,我已经制作了按钮并使用以下代码让用户从图库中选择图像:

public void image(View v) {
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_PICTURE);
}

现在,我试图获取此图像的路径,以便我可以将其存储在数据库中以便以后检索它。我知道如何将路径插入数据库但只是不知道如何获取路径名。

此外,我想复制用户选择的图像并粘贴到新文件夹中,其中所有图像都是。

任何帮助将不胜感激。

由于

2 个答案:

答案 0 :(得分:0)

  

到目前为止,我已经制作了按钮并使用以下代码让用户从图库中选择图像

不,您要求用户选择图像。任意数量的应用都可以提供支持ACTION_GET_CONTENT image/*数据的活动,而不仅仅是您认为是图库的内容。

  

现在,我正在尝试获取此图像的路径,以便我可以将其存储在数据库中以便稍后检索它

没有路径,没有任何东西可以存储,以后您可以使用。您获得的Uri(通过传递给Intent的{​​{1}})可以在短时间内工作。它让人联想到您可能会访问网站中的图像的URL,其中URL仅在用户通过身份验证时有效。要么立即使用onActivityResult(),要么计划让用户以后再次选择图像。或者,切换到Storage Access Framework并希望您获得持久且具有可持久权限的Uri(并将Uri设置为19或更高)。

  

我想复制用户选择的图像并粘贴到新文件夹中,其中所有图片都将

目前还不清楚“复制用户选择的图像并将其粘贴到新文件夹”对您来说意味着什么。如果您的意思是计算机用户称之为“复制文件”,use ContentResolver and openInputStream()会在图片上获得minSdkVersion。然后,使用标准Java I / O将其复制到您控制下的某个文件中。您可以存储在数据库中的 文件的路径,因为您现在正在管理该文件的副本。但是,这会导致用户可能想要或不想要的数据重复(图像的两个副本)。

答案 1 :(得分:0)

您可以在sqlite数据库中以bytearray格式存储图像。

ByteArrayOutputStream baos = new ByteArrayOutputStream();
            imageBitmap.compress(Bitmap.CompressFormat.JPEG, 60, baos);

byte[] byteArray=baos.toByteArray();

然后使用此byteArray在Sqlite中插入图像。 :)

希望这对你有所帮助。