如何将图像从可绘制资源保存到SD卡?

所以,我有一个如下图所示的视图。 另外,我将添加一个“保存”按钮。 您还可以看到我的XML文件。 我使用此代码通过按下一个和上一个按钮从可绘制文件夹加载图像:

public void onClick(View v) { switch (v.getId()){ case R.id.bNext: a++; setImage(a); break; case R.id.bPrevious: if(a>0) { a--; setImage(a); break; } } } private void setImage(int a){ if (a == 0) { slika.setImageResource(R.drawable.l2); a = 1; } else if (a == 1) { slika.setImageResource(R.drawable.l3); a = 2; } else if (a == 2) { slika.setImageResource(R.drawable.l4); a = 3; } else if (a == 3) { slika.setImageResource(R.drawable.l5); a = 4; } else if (a == 4) { slika.setImageResource(R.drawable.l6); a = 5; } . . . . . else if (a == 55) { slika.setImageResource(R.drawable.l57); a = 56; } } 

我需要保存当前在屏幕上的图像。 我在stackoverflow上找到了一些答案,但这些都是针对具有已知名称的特定图像。 我不知道用户想要保存什么图像。

在此处输入图像描述

    

  void Save(){ String folder = "/sdcard/Pictures/MyAppFolder"; Imageview view = (ImageView)findViewById(R.id.cachesView); view.buildDrawingCache(); Bitmap yourBitmap = view.getDrawingCache(); final File myDir = new File(folder); myDir.mkdirs(); final Random generator = new Random(); int n = 10000; n = generator.nextInt(n); final String fname = "StyleMe-" + n + ".png"; File file = new File(myDir, fname); if (file.exists()) FileOutputStream out = new FileOutputStream(file); yourBitmap.compress(CompressFormat.JPEG, 100, out); out.flush(); out.close(); sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); // this will refresh the gallery app. Toast.makeText(getApplication(), "Image Saved", Toast.LENGTH_SHORT) .show(); } 

请参阅

在您的课程中添加此方法,然后单击按钮放置

 Save();