2010-10-25 6 views
40

Je suis en train de développer une application sur toile, je dessine un bitmap sur la toile.Après le dessin, je suis en train de convertir en image bitmap.convertir une toile en image bitmap en android

quelqu'un peut-il me donner une suggestion.

merci d'avance.

+0

Vous obtenez déjà un objet bitmap ou si vous souhaitez enregistrer cette toile dans un fichier bitmap? –

Répondre

62

Le conseil dépend de ce que vous essayez de faire. Si vous craignez que vos contrôles prennent beaucoup de temps à dessiner et que vous souhaitiez dessiner sur une image bitmap afin de pouvoir masquer l'image bitmap plutôt que de la redessiner via un canevas, alors ne souhaite pas être à double deviner la plate-forme - commandes cache automatiquement leur dessin bitmaps temporaires, et ceux-ci peuvent même être extraites de la commande à l'aide getDrawingCache()

Si vous voulez dessiner à l'aide d'une toile à un bitmap, la recette habituelle est:

  1. Créer un bitmap de la bonne taille en utilisant Bitmap.createBitmap()
  2. Créer une instance de toile montrant que ce bitmap à l'aide Canvas(Bitmap) constructeur
  3. Dessin à la toile
  4. Utilisez le bitmap
18

Vous créez un nouveau Bitmap, par exemple:

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

avec width et height étant la même chose que votre toile. Par la suite, utilisez canvas.setBitmap(myBitmap), mais pas drawBitmap().

Après avoir appelé setBitmap, tout ce que vous dessinez sur le canevas est en fait, en dessinant sur votre myBitmap en suivant l'exemple de code que j'ai illustré.

Modifier:

Vous ne pouvez pas créer une image bitmap directement tels que:

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

Vous devez utiliser:

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

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; 
} 
0

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

Remarque: Assurez-vous que vous avez donné la permission de WRITE_EXTERNAL_STORAGE

activity_main.xml

  <LinearLayout 
       android:id="@+id/linearLayout" 
       android:orientation="horizontal" 
       android:layout_margin="10dp" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"> 

       <DrawingView 
        android:id="@+id/drawingView" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"/> 

      </LinearLayout> 

MainActivity.java

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

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

    final String imagename = UUID.randomUUID().toString() + ".png"; 
    MediaStore.Images.Media.insertImage(getContentResolver(), linearLayout .getDrawingCache(), imagename, "drawing"); 
    
  3. Pour convertir en bitmap

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