converting a canvas into bitmap image in android
So you create a new Bitmap
, for example:
Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 )
with width
and height
being the same as your canvas.
Next, use canvas.setBitmap(myBitmap)
, but not drawBitmap()
.
After you call setBitmap
, all what you draw on canvas is in fact, drawing on your myBitmap
going by the example code I have illustrated.
Edit:
You can not create a bitmap directly such as:
Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 );
You must use instead:
Bitmap myBitmap = Bitmap.createBitmap( (int)Width, (int)Height, Config.RGB_565 );
Advice depends upon what you are trying to do.
If you are concerned that your controls take a long time to draw, and you want to draw to a bitmap so you can blit the bitmap rather than re-drawing via a canvas, then you don't want to be double-guessing the platform - controls automatically cache their drawing to temporary bitmaps, and these can even be fetched from the control using getDrawingCache()
If you want to draw using a canvas to a bitmap, the usual recipe is:
- Create a bitmap of the correct size using
Bitmap.createBitmap()
- Create a canvas instance pointing that this bitmap using
Canvas(Bitmap)
constructor - Draw to the canvas
- Use the bitmap