我如何将画布转换为位图保存在sdCard



我使用SurfaceView在屏幕上移动两个位图图片。我试过了:

...
@Override
protected void onDraw(Canvas canvas) {
  super.onDraw(canvas);
  ...
  canvas.drawBitmap(bitmap,matrix,paint);
  canvas.drawBitmap(bitmap2,matrix,paint);
}
...

如何保存画布到sdCard像这样?

public saveCanvasIntoSdCard(Canvas canvas)
{
}

我找到了解决方案:

public Bitmap getBitmap() {
  Bitmap bmOverlay = Bitmap.createBitmap(bitmap2.getWidth(), bitmap2.getHeight(), bitmap2.getConfig());
  Canvas canvas = new Canvas(bmOverlay);
  canvas.drawBitmap(bitmap, matrix, null);
  canvas.drawBitmap(bitmap2, 0, 0, null);
  return bmOverlay;
}
public void save(View view){
  String root = Environment.getExternalStorageDirectory().toString();
  File myDir = new File(root + "/dress");    
  myDir.mkdirs();
  String fname = "save.jpg";
  File file = new File (myDir, fname);
  if (file.exists ()) file.delete (); 
  try {
  FileOutputStream out = new FileOutputStream(file);
  getBitmap().compress(Bitmap.CompressFormat.JPEG, 100, out);
  out.flush();
  out.close();
  } catch (Exception e) {
  e.printStackTrace();
  }
}

最新更新