Merge two bitmaps in android

前端 未结 4 2030
既然无缘
既然无缘 2020-12-05 08:23

I want to merge two bitmaps, here is my code

// Camera arg conversion to Bitmap
                    Bitmap cameraBitmap = BitmapFactory.decodeByteArray(arg0,         


        
4条回答
  •  执笔经年
    2020-12-05 09:01

    From your example, you forgot to add the next lines:

     comboImage.drawBitmap(c, 0f, 0f, null); 
     comboImage.drawBitmap(s, 0f, c.getHeight(), null);
    

    In your example above you don't draw your image in the canvas, and that is the problem. You can think that your canvas i your sketchbook. For now you didn't paint anything, and you ask yourself, way I can't see any colors.

    So, for my advice, first create the two bitmaps, then, do the next thing:

    c.drawBitmap(cameraBitmap, top point, left point, null);
    c.drawBitmap(foreground, top point, left point, null); 
    

    You can also do this by first create the drawable objects from your bitmaps, like in the next code:

    Drawable cameraBitmap = BitmapDrawable(cameraBitmap);
    Drawable foreground= BitmapDrawable(foreground);
    

    Then when you have the drawable objects, you can set thier bounds, and that way you set where do you want to show that image.

    cameraBitmap.setBounds(left, top, right, bottom);
    foreground.setBounds(left, top, right, bottom);
    

    and finally draw that on the canvas:

    cameraBitmap.draw(canvas);
    foreground.draw(canvas);
    

    EDIT:

    This is an example, use this to understand your implementation:

        Bitmap bitmap = null;
        try {
    
            bitmap = Bitmap.createBitmap(500, 500, Config.ARGB_8888);
            Canvas c = new Canvas(bitmap);
            Resources res = getResources();
    
    
            Bitmap bitmap1 = BitmapFactory.decodeResource(res, R.drawable.test1); //blue
    
            Bitmap bitmap2 = BitmapFactory.decodeResource(res, R.drawable.test2); //green
            Drawable drawable1 = new BitmapDrawable(bitmap1);
            Drawable drawable2 = new BitmapDrawable(bitmap2);
    
    
            drawable1.setBounds(100, 100, 400, 400);
            drawable2.setBounds(150, 150, 350, 350);
            drawable1.draw(c);
            drawable2.draw(c);
    
    
        } catch (Exception e) {
        }
        return bitmap;
    

    This is what I get from the code above:

    enter image description here

提交回复
热议问题