convertir une canvas en image bitmap dans Android

J’essaie de développer une application sur la canvas, je dessine un bitmap sur la canvas. Après avoir dessiné, j’essaie de convertir en image bitmap.

quelqu’un peut-il me donner une suggestion.

Merci d’avance.

Les conseils dépendent de ce que vous essayez de faire.

Si vous craignez que vos contrôles prennent beaucoup de temps à dessiner, et que vous souhaitiez dessiner un bitmap pour que vous puissiez tracer le bitmap plutôt que de re-dessiner via un canevas, alors vous ne voulez pas deviner la plate-forme – les contrôles getDrawingCache() automatiquement en cache leur dessin sur des bitmaps temporaires, et ceux-ci peuvent même être extraits du contrôle à l’aide de getDrawingCache()

Si vous souhaitez dessiner en utilisant un canevas sur un bitmap, la recette habituelle est la suivante:

  1. Créez un bitmap de la taille correcte en utilisant Bitmap.createBitmap()
  2. Créer une instance de canevas pointant que ce bitmap à l’aide du constructeur Canvas(Bitmap)
  3. Dessiner sur la canvas
  4. Utilisez le bitmap

Donc, vous créez une nouvelle Bitmap , par exemple:

Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 )

avec la width et la height identiques à votre canvas.

Ensuite, utilisez canvas.setBitmap(myBitmap) , mais pas drawBitmap() .

Une fois que vous avez appelé setBitmap , tout ce que vous dessinez sur canvas est en fait myBitmap sur myBitmap en suivant l’exemple de code que j’ai illustré.

Modifier :

Vous ne pouvez pas créer un bitmap directement tel que:

 Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 ); 

Vous devez utiliser à la place:

 Bitmap myBitmap = Bitmap.createBitmap( (int)Width, (int)Height, Config.RGB_565 ); 

Autre exemple:

 public Bitmap getBitmapNews(int item , boolean selected, int numbernews){ Bitmap bitmap; if(selected) bitmap=mBitmapDown[item].copy(Config.ARGB_8888, true); else bitmap=mBitmapUp[item].copy(Config.ARGB_8888, true); Canvas canvas = new Canvas(bitmap); if(numbernews<10){ canvas.drawBitmap(mNotiNews[numbernews],0,0,null); }else{ canvas.drawBitmap(mNotiNews[0],0,0,null); } return bitmap; } 

Voici les étapes à suivre pour convertir un canevas en bitmap et le stocker dans une galerie ou un dossier spécifique.

Remarque: Assurez-vous d’avoir donné l’autorisation de WRITE_EXTERNAL_STORAGE

activity_main.xml

     

MainActivity.java

  1. Créer une référence de mise en page parent

     LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout); 
  2. Pour le stocker dans la galerie

     final Ssortingng imagename = UUID.randomUUID().toSsortingng() + ".png"; MediaStore.Images.Media.insertImage(getContentResolver(), linearLayout .getDrawingCache(), imagename, "drawing"); 
  3. Convertir en bitmap

     linearLayout.setDrawingCacheEnabled(true); linearLayout.buildDrawingCache(); Bitmap bitmap = Bitmap.createBitmap(linearLayout.getDrawingCache());