Can any one help to combine two bitmap images into single bitmap
in android (Side by side).
Thanks, Yuvaraj
Bitmap combined = Bitmap. createBitmap(width, height, Bitmap. Config. ARGB_8888);
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; }
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 } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With