Imagen sobre canvas en archivo JPEG

Estoy dibujando imágenes 2D en el canvas.

Quiero guardar la imagen que se muestra en el canvas en un archivo JPEG, ¿cómo puedo hacerlo?

  1. crear un bitmap vacío
  2. crear un nuevo objeto Canvas y pasarle este bitmap
  3. llama a view.draw (Canvas) pasándole el objeto canvas que acabas de crear. Consulte la documentación del método para más detalles.
  4. Utilice Bitmap.compress () para escribir el contenido del bitmap en un OutputStream, archivo tal vez.

Pseudo código:

Bitmap bitmap = Bitmap.createBitmap( view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); view.draw(canvas); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); 
  1. establecer caché de dibujo habilitado
  2. Dibuja lo que quieras
  3. Obtener el objeto Bitmap de la vista
  4. Comprime y guarda el archivo de imagen
 import java.io.File; import java.io.FileOutputStream; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.Bundle; import android.util.Log; import android.view.View; public class CanvasTest extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Draw2d d = new Draw2d(this); setContentView(d); } public class Draw2d extends View { public Draw2d(Context context) { super(context); setDrawingCacheEnabled(true); } @Override protected void onDraw(Canvas c) { Paint paint = new Paint(); paint.setColor(Color.RED); c.drawCircle(50, 50, 30, paint); try { getDrawingCache().compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(new File("/mnt/sdcard/arun.jpg"))); } catch (Exception e) { Log.e("Error--------->", e.toString()); } super.onDraw(c); } } } 

Lienzo a JPG:

 Canvas canvas = null; FileOutputStream fos = null; Bitmap bmpBase = null; bmpBase = Bitmap.createBitmap(image_width, image_height, Bitmap.Config.ARGB_8888); canvas = new Canvas(bmpBase); // draw what ever you want canvas.draw... // Save Bitmap to File try { fos = new FileOutputStream(your_path); bmpBase.compress(Bitmap.CompressFormat.PNG, 100, fos); fos.flush(); fos.close(); fos = null; } catch (IOException e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.close(); fos = null; } catch (IOException e) { e.printStackTrace(); } } }