2011-07-25 6 views
1

J'ai deux images que je veux fusionner en une seule. (Par exemple "House.png" en haut de "street.png")Superposer des images dans Android

Comment puis-je réaliser cela sous Android? Je veux juste fusionner les images et les exporter dans un fichier.

This example Définit l'image sur un ImageView mais je souhaite l'exporter.
This other example ne fonctionne pas sur Android car les cours ne sont pas disponibles.

Répondre

3

Je vais essayer quelque chose comme:

public static Bitmap mergeImages(Bitmap bottomImage, Bitmap topImage) { 
    final Bitmap output = Bitmap.createBitmap(bottomImage.getWidth(), bottomImage 
      .getHeight(), Config.ARGB_8888); 
    final Canvas canvas = new Canvas(output); 
    final Paint paint = new Paint(); 
    paint.setAntiAlias(true); 

    canvas.drawBitmap(bottomImage, 0, 0, paint); 
    canvas.drawBitmap(topImage, 0, 0, paint); 

    return output; 
} 

(pas testé, je viens d'écrire ici, peut-être quelques erreurs simples là-dedans)

Fondamentalement, ce que vous faites est de créer une 3ème bitmap vide , dessinez l'image du bas dessus, puis dessinez l'image du dessus.

En ce qui concerne l'enregistrement dans un fichier, voici quelques exemples: Save bitmap to location

1

Vous pouvez faire comme ceci ...............

public Bitmap Overlay(Bitmap Bitmap1, Resources paramResources, Bitmap Bitmap2, int alpha) 
    { 
     Bitmap bmp1 = Bitmap.createScaledBitmap(Bitmap2, Bitmap1.getWidth(), Bitmap1.getHeight(), true); 
     Bitmap bmp2 = Bitmap.createBitmap(Bitmap1.getWidth(), Bitmap1.getHeight(), Bitmap1.getConfig()); 
     Paint localPaint = new Paint(); 
     localPaint.setAlpha(alpha); 
     Canvas localCanvas = new Canvas(bmp2); 
     Matrix localMatrix = new Matrix(); 
     localCanvas.drawBitmap(Bitmap1, localMatrix, null); 
     localCanvas.drawBitmap(bmp1, localMatrix, localPaint); 
     bmp1.recycle(); 
     System.gc(); 
     return bmp2; 
    } 
Questions connexes