如何在android中保存绘图画布?

时间:2011-11-18 07:24:23

标签: android android-layout android-emulator android-widget android-canvas

我正在使用开发者网站的{API}演示版THIS DEMO.

但我很想知道如何将该图像保存到我的Andrtoid设备中。 请任何人都使用代码将绘制的图像保存到Android设备。

感谢。

4 个答案:

答案 0 :(得分:12)

试试这段代码

View content = your_view;
content.setDrawingCacheEnabled(true);
content.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
Bitmap bitmap = content.getDrawingCache();
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
File file = new File(path+"/image.png");
FileOutputStream ostream;
try {
    file.createNewFile();
    ostream = new FileOutputStream(file);
    bitmap.compress(CompressFormat.PNG, 100, ostream);
    ostream.flush();
    ostream.close();
    Toast.makeText(getApplicationContext(), "image saved", 5000).show();
} catch (Exception e) {
    e.printStackTrace();
    Toast.makeText(getApplicationContext(), "error", 5000).show();
}

答案 1 :(得分:1)

drawView.setDrawingCacheEnabled(true);
Bitmap bm = null;
drawView.destroyDrawingCache();
bm=drawView.getDrawingCache();

然后使用位图工厂将位图写入文件。

答案 2 :(得分:0)

一个选项是创建另一个Canvas(如下所示)并在这个新画布上重复所有绘图。 完成后,调用drawBitmap。

Bitmap bitmap = new Bitmap(// Set the params you like //);
Canvas canvas = new Canvas(bitmap);

// Do all your drawings here

canvas.drawBitmap(// The first picture //);

最好的方法是,如果有办法复制现有画布,然后你不需要重新绘制所有内容,但我找不到。

答案 3 :(得分:0)

我已经实施了以下方法并为我工作。 通过使用xml文件中的ID来获取CustomView,而不要实例化Customview。

View v = findViewById(R.id.custom_view);
//don't get customview by this way, View v = new CustomView(this);
int canvasWidth = v.getWidth();
int canvasHeight = v.getHeight();
Bitmap bitmap = Bitmap.createBitmap(canvasWidth, canvasHeight, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
v.draw(canvas);
ImageView imageView = findViewById(R.id.image_view);
imageView.setImageBitmap(bitmap);

所有代码都应在saveButton单击侦听器内。