合并两张叠加的图片

17

我有一个跟Android相关的问题,我手头有两张图片:

  1. 从相机获取的图片
  2. 从其他地方获取的图片

我想实现的是如何将这两张图片合成为一张重叠的图片(就像给图片添加水印一样)。

第二张图片需要先缩放到与第一张图片(相机图片)大小相同,然后如果第二张图片中的像素是黑色,则不进行合成(所以黑色表示透明色-在第二张图片上)。

请问有什么最好的方法可以实现这个功能吗?我可以使用异或或位运算符来完成吗?

如果您能提供任何参考资料或示例代码,我将非常感激。

谢谢大家!


请查看此链接:http://kyogs.blogspot.in/2012/08/mearge-images.html。 - kyogs
1个回答

47

用于叠加两个位图:

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;
    }

另外,如果要进行缩放操作,首先应该查看 createScaledBitmap 方法,例如:

Bitmap scaledBitmap = Bitmap.createScaledBitmap(src, dstWidth, dstHeight, filter);

嗨,谢谢你的回复,我会先尝试并在这里回来报告结果。 - AnD
嗨,即使在大尺寸 ~ 2000px x 1500px 的情况下也可以工作,但问题是如果我做两次,第二次尝试会出现异常(可能是不同步的)- 我将您的代码放在线程中。 - AnD
@AnD@Cpt.Ohlund:在我的设备上,bottomImage(bmp1)没有显示。你知道为什么吗?代替那张图片的是一些颜色。 - Surej
1
有没有其他的方法,这个太慢了。 - Salmaan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接