2011-01-20 31 views
6

Me temo que ya tengo la desafortunada respuesta a esta pregunta, pero por las dudas ... Estoy usando SurfaceView para hacer algunos procesamientos de imagen con mapas de bits (modificaciones de luces y colores) y necesitaría importar el mapa de bits modificado (es decir, el contenido de SurfaceView) en un nuevo mapa de bits para poder guardarlo como un archivo de imagen.Android: crear un mapa de bits con contenido SurfaceView

He estado mirando alrededor y parece que es posible obtener un mapa de bits de View.getDrawingCache() pero no funciona con SurfaceView. Todo lo que obtengo es un mapa de bits vacío.

¿Hay alguna solución a esto?

Gracias

Respuesta

7

¿Se puede llamar su SurfaceView en un lienzo que está respaldado por un mapa de bits?

// be sure to call the createBitmap that returns a mutable Bitmap 
    Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); 
    Canvas c = new Canvas(b); 
    yourSurfaceView.draw(c); 
+0

Quería utilizar esta solución, pero no es posible con SurfaceViews porque el proceso de dibujo se realiza en un hilo y el lienzo se obtiene del SurfaceHolder. Se usa de esta manera: canvas = surfaceHolder.lockCanvas (null); sincronizado (surfaceHolder) {doDraw (canvas); } –

+7

Problema resuelto. Cambié el SurfaceView a una simple vista personalizada. Luego, habilitando el dibujoCache (setDrawingCacheEnabled (true)) cuando se crea la vista, puedo recuperar un mapa de bits llamando al método getDrawingCache(). –

+0

para su primer comentario, ¿no podría simplemente llamar a doDraw con el lienzo respaldado por mapa de bits? 'if (screenGrab) {doDraw (c_fromMyPost); } else {doDraw (canvas_fromYourApp); } ' – idbrii

Cuestiones relacionadas