How to combine multiple images into a single image in android?

后端 未结 3 1240
别那么骄傲
别那么骄傲 2020-11-29 06:57

I am working on a distributed application of android.I have splitted a single image into lets say 4 parts and then processed it. Now I want to combine 4 bitmap images into a

相关标签:
3条回答
  • 2020-11-29 07:20
    Bitmap[] parts = new Bitmap[4];
    Bitmap result = Bitmap.createBitmap(parts[0].getWidth() * 2, parts[0].getHeight() * 2, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(result);
    Paint paint = new Paint();
    for (int i = 0; i < parts.length; i++) {
        canvas.drawBitmap(parts[i], parts[i].getWidth() * (i % 2), parts[i].getHeight() * (i / 2), paint);
    }
    

    Something like this =)

    0 讨论(0)
  • 2020-11-29 07:36

    Following piece of code will do the trick for you to combine four bitmaps in one. Call this method 3 times to combine the four images.

    Step 1:Combine first two images

    Step 2:Combine the renaming two images

    Step 3:Combine the the two new created bitmaps

    public static Bitmap overlay(Bitmap bmp1, Bitmap bmp2) {
            Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
            Canvas canvas = new Canvas(bmOverlay);
            canvas.drawBitmap(bmp1, new Matrix(), null);
            canvas.drawBitmap(bmp2, 0, 0, null);
            return bmOverlay;
        }
    
    0 讨论(0)
  • 2020-11-29 07:38

    You need to create a function of bitmap type. That is, it returns a bitmap data type. The function should have an argument of data type Bitmap which is an array.

    Download demo here

    You will pass your images to the function as array of bitmap. This is our function to merge not only four images but any size of images.

    private Bitmap mergeMultiple(Bitmap[] parts){
    
        Bitmap result = Bitmap.createBitmap(parts[0].getWidth() * 2, parts[0].getHeight() * 2, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(result);
        Paint paint = new Paint();
        for (int i = 0; i < parts.length; i++) {
            canvas.drawBitmap(parts[i], parts[i].getWidth() * (i % 2), parts[i].getHeight() * (i / 2), paint);
        }
            return result;
        }
    

    Finally you are done.. Read more here

    0 讨论(0)
提交回复
热议问题