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:
Bitmap.createBitmap()
Canvas(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
Créer une référence de mise en page parent
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
Pour le stocker dans la galerie
final Ssortingng imagename = UUID.randomUUID().toSsortingng() + ".png"; MediaStore.Images.Media.insertImage(getContentResolver(), linearLayout .getDrawingCache(), imagename, "drawing");
Convertir en bitmap
linearLayout.setDrawingCacheEnabled(true); linearLayout.buildDrawingCache(); Bitmap bitmap = Bitmap.createBitmap(linearLayout.getDrawingCache());