我正在尝试获取用户从图库中选择的图像的路径。到目前为止,我已经制作了按钮并使用以下代码让用户从图库中选择图像:
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);
}
现在,我试图获取此图像的路径,以便我可以将其存储在数据库中以便以后检索它。我知道如何将路径插入数据库但只是不知道如何获取路径名。
此外,我想复制用户选择的图像并粘贴到新文件夹中,其中所有图像都是。
任何帮助将不胜感激。
由于
答案 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中插入图像。 :)
希望这对你有所帮助。