将图像从Android上的可绘制资源保存到SD卡

我想知道如何通过点击button将图像保存到用户的SD卡。 有人能告诉我怎么做。 图像格式为.png,存储在绘图目录中。 我想编程一个button,将该图像保存到用户的SD卡。

Solutions Collecting From Web of "将图像从Android上的可绘制资源保存到SD卡"

在这里描述保存文件的过程(这是你的案例中的图像): save-file-to-sd-card


从drawable资源保存图像到SD卡:

假设你的绘图中有一个图像ic_launcher。 然后从这个图像得到一个位图对象,如:

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

SD卡的path可以通过以下方式获取:

 String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); 

然后保存到SD卡的button点击使用:

 File file = new File(extStorageDirectory, "ic_launcher.PNG"); outStream = new FileOutputStream(file); bm.compress(Bitmap.CompressFormat.PNG, 100, outStream); outStream.flush(); outStream.close(); 

不要忘记添加android.permission.WRITE_EXTERNAL_STORAGE权限。

下面是修改后的可绘制文件: SaveToSd ,一个完整的示例项目: SaveImage

我认为在这个问题上没有真正的解决scheme,唯一的方法就是从sd_cardcaching中复制和启动目录,如下所示:

 Bitmap bm = BitmapFactory.decodeResource(getResources(), resourceId); File f = new File(getExternalCacheDir()+"/image.png"); try { FileOutputStream outStream = new FileOutputStream(f); bm.compress(Bitmap.CompressFormat.PNG, 100, outStream); outStream.flush(); outStream.close(); } catch (Exception e) { throw new RuntimeException(e); } Intent intent = new Intent(); intent.setAction(android.content.Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(f), "image/png"); startActivity(intent); // NOT WORKING SOLUTION // Uri path = Uri.parse("android.resource://" + getPackageName() + "/" + resourceId); // Intent intent = new Intent(); // intent.setAction(android.content.Intent.ACTION_VIEW); // intent.setDataAndType(path, "image/png"); // startActivity(intent);