Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Combining two bitmap image (side by side)

Tags:

Can any one help to combine two bitmap images into single bitmap

in android (Side by side).

Thanks, Yuvaraj

like image 517
Yuvaraj Avatar asked Feb 01 '11 14:02

Yuvaraj


People also ask

How to combine two Bitmaps in android?

Bitmap combined = Bitmap. createBitmap(width, height, Bitmap. Config. ARGB_8888);


2 Answers

You can use Canvas - check out this article:

http://www.jondev.net/articles/Combining_2_Images_in_Android_using_Canvas

Updated code to do it side by side:

public Bitmap combineImages(Bitmap c, Bitmap s) { // can add a 3rd parameter 'String loc' if you want to save the new image - left some code to do that at the bottom      Bitmap cs = null;       int width, height = 0;       if(c.getWidth() > s.getWidth()) {        width = c.getWidth() + s.getWidth();        height = c.getHeight();      } else {        width = s.getWidth() + s.getWidth();        height = c.getHeight();      }       cs = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);       Canvas comboImage = new Canvas(cs);       comboImage.drawBitmap(c, 0f, 0f, null);      comboImage.drawBitmap(s, c.getWidth(), 0f, null);       // this is an extra bit I added, just incase you want to save the new image somewhere and then return the location      /*String tmpImg = String.valueOf(System.currentTimeMillis()) + ".png";       OutputStream os = null;      try {        os = new FileOutputStream(loc + tmpImg);        cs.compress(CompressFormat.PNG, 100, os);      } catch(IOException e) {        Log.e("combineImages", "problem combining images", e);      }*/       return cs;    }  
like image 70
xil3 Avatar answered Oct 02 '22 13:10

xil3


I ended up modifying xil3's answer into a kotlin extension function, maybe it will be useful to someone. In my case I wanted the images stacked vertically

fun Bitmap?.combine(b: Bitmap?): Bitmap? = when {     b == null || this == null -> {         this ?: b     } else -> {         val cs = Bitmap.createBitmap(             max(this.width, b.width),             this.height + b.height,             Bitmap.Config.ARGB_8888         )         val canvas = Canvas(cs)         canvas.drawBitmap(this, 0f, 0f, null)         canvas.drawBitmap(b, 0f, this.height.toFloat(), null)         cs     } } 
like image 41
crobicha Avatar answered Oct 02 '22 13:10

crobicha