2011-01-20 2 views
6

J'ai peur d'avoir déjà la réponse malheureuse à cette question mais juste au cas où ... J'utilise un SurfaceView pour faire du traitement d'image avec des bitmaps (modifications de lumières et de couleurs) et je devrais importer le bitmap modifié (c.-à-d. le contenu de SurfaceView) dans un nouveau bitmap afin que je puisse l'enregistrer en tant que fichier d'image.Android: créer un bitmap avec du contenu SurfaceView

J'ai regardé autour et il semble qu'il est possible d'obtenir un bitmap à partir de View.getDrawingCache() mais cela ne fonctionne pas avec SurfaceView. Tout ce que je reçois est un bitmap vide.

Y at-il une solution à cela?

Merci

Répondre

7

Pouvez-vous attirer votre SurfaceView sur une toile qui est soutenu par un Bitmap?

// 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

Je voulais utiliser cette solution mais ce n'est pas possible avec SurfaceViews car le processus de dessin est fait dans un thread et le canvas est obtenu à partir de SurfaceHolder. Il est utilisé de cette façon: canvas = surfaceHolder.lockCanvas (null); synchronized (surfaceHolder) {doDraw (canvas); } –

+7

Problème résolu. J'ai changé le SurfaceView en une vue personnalisée simple. Puis, en activant drawingCache (setDrawingCacheEnabled (true)) lorsque la vue est créée, je suis capable de récupérer une image bitmap appelant la méthode getDrawingCache(). –

+0

pour votre premier commentaire, ne pourriez-vous pas appeler doDraw avec le Canvas bitmap-soutenu? 'if (screenGrab) {doDraw (c_fromMyPost); } else {doDraw (canvas_fromYourApp); } ' – idbrii