在android java中组合两个图像

在android java中组合两个图像,java,android,image,image-processing,Java,Android,Image,Image Processing,所以我在安卓系统的SD卡上本地存储了两张图片,我想把它们合并成一张图片。这很难解释,因此我将链接到一张图片,以获得更好的示例,说明我希望如何拍摄前两张图片并将它们合并到最后一张中 创建目标位图,为其创建画布,使用Canvas.drawBitmap将每个源位图blit到目标位图中。最简单的方法可能是在相对位置中使用两个图像视图。可以将图像视图放置在布局中的每个视图的顶部 我通常使用以下函数组合作为参数传递的两个位图,并将组合后的位图作为输出 public Bitmap combineIma

所以我在安卓系统的SD卡上本地存储了两张图片,我想把它们合并成一张图片。这很难解释,因此我将链接到一张图片,以获得更好的示例,说明我希望如何拍摄前两张图片并将它们合并到最后一张中


创建目标
位图
,为其创建
画布
,使用
Canvas.drawBitmap
将每个源位图blit到目标位图中。

最简单的方法可能是在相对位置中使用两个图像视图。可以将图像视图放置在布局中的每个视图的顶部

我通常使用以下函数组合作为参数传递的两个位图,并将组合后的位图作为输出

    public Bitmap combineImages(Bitmap c, Bitmap s) 
{ 
    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); 

    return cs; 
}  
类似于,但具有用于指定前景图像位置的参数:

public static Bitmap mergeBitmaps(Bitmap bitmapBg, Bitmap bitmapFg, float fgLeftPos, float fgTopPos) {

    // Calculate the size of the merged Bitmap
    int mergedImageWidth = Math.max(bitmapBg.getWidth(), bitmapFg.getWidth());
    int mergedImageHeight = Math.max(bitmapBg.getHeight(), bitmapFg.getHeight());

    // Create the return Bitmap (and Canvas to draw on)
    Bitmap mergedBitmap = Bitmap.createBitmap(mergedImageWidth, mergedImageHeight, bitmapBg.getConfig());
    Canvas mergedBitmapCanvas = new Canvas(mergedBitmap);

    // Draw the background image
    mergedBitmapCanvas.drawBitmap(bitmapBg, 0f, 0f, null);

    //Draw the foreground image
    mergedBitmapCanvas.drawBitmap(bitmapFg, fgLeftPos, fgTopPos, null);

    return mergedBitmap;

}
这个