从可绘制图像中获取URI

13

我该如何获取保存在drawable中的图像URI? 我尝试了以下格式,但每次都无法加载图像。

imageURI= Uri.parse("android.resource://" + getPackageName() + "/" + R.drawable.indoor_thumbnail1);
imageURI=Uri.parse("android.resource://"+getPackageName()+"/drawables/imageName");
 imageURI=Uri.parse("android.resource://"+getPackageName()+"/drawables/imageName.png");
imageURI = Uri.parse("android.resource://"+ getResources().getResourceTypeName(R.drawable.indoor_thumbnail1)+"/" +getResources().getResourceEntryName(R.drawable.indoor_thumbnail1)+".png" );

不知道为什么无法获取图像URI..

4个回答

17

试一下这个:

Resources resources = context.getResources();
Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + resources.getResourcePackageName(resId) + '/' + resources.getResourceTypeName(resId) + '/' + resources.getResourceEntryName(resId) );

在Kit-Kat和Nougat上运行良好。 - Kirill Karmazin

11

对于新手用户来说,我发现大多数答案都很令人困惑,因此我会包含一个示例。

your_package_name = org.xyz.abc

drawable中的图片 => myimage.jpg

Uri uri = Uri.parse("android.resource://org.xyz.abc/drawable/myimage");
or 
Uri uri = Uri.parse("android.resource://"+context.getPackageName()+"/drawable/myimage");

简单。正是我所需要的。 - GabrielBB

10

这就是你真正需要的:

Uri imageUri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE +
"://" + getResources().getResourcePackageName(R.drawable.ic_launcher)
+ '/' + getResources().getResourceTypeName(R.drawable.ic_launcher) + '/' + getResources().getResourceEntryName(R.drawable.ic_launcher) );

1
我认为应该是:Uri imageUri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getResources().getResourcePackageName(R.drawable.ic_launcher) + '/' + getResources().getResourceTypeName(R.drawable.ic_launcher) + '/' + String.valueOf(R.drawable.ic_launcher); - fobbymaster

1
你也可以尝试这个:

    Bitmap bm = BitmapFactory.decodeResource( getResources(), R.drawable.myimage_name);

String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
            File file = new File(extStorageDirectory, "MyIMG.png");
            FileOutputStream outStream = null;
            try {
                outStream = new FileOutputStream(file);
                bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
                outStream.flush();
                outStream.close();

    } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

    Uri imguri=Uri.fromFile(file);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接