java - 如何合并两个图像但忽略相同的元素?

标签 java image merge photo bufferedimage

我想制作一张屏幕截图,然后滚动并再次制作屏幕截图,然后将这两个图像合并为一个,但忽略相同的元素。

我知道如何在java中合并两个图像,但不知道如何忽略相等的部分。

public static BufferedImage joinBufferedImage(BufferedImage img1,BufferedImage img2) {

    //do some calculate first
    int offset  = 5;
    int wid = img1.getWidth()+img2.getWidth()+offset;
    int height = Math.max(img1.getHeight(),img2.getHeight())+offset;
    //create a new buffer and draw two image into the new image
    BufferedImage newImage = new BufferedImage(wid,height, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2 = newImage.createGraphics();
    Color oldColor = g2.getColor();
    //fill background
    g2.setPaint(Color.WHITE);
    g2.fillRect(0, 0, wid, height);
    //draw image
    g2.setColor(oldColor);
    g2.drawImage(img1, null, 0, 0);
    g2.drawImage(img2, null, img1.getWidth()+offset, 0);
    g2.dispose();
    return newImage;
}

最佳答案

你想做的事情叫做拼接。

我建议使用一些支持拼接的库,例如 OpenCV。 OpenCV 有一个 Java 端口,如果您搜索“OpenCV stitcher”之类的内容,您会发现大量教程

关于java - 如何合并两个图像但忽略相同的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32134561/

相关文章:

java - 如何重写 toString 方法以在 Java 中显示列表中的元素?

java - 如何更改微调菜单的标题

java - 如何使用 JAXB 注释将 Java 列表转换为 XML?

c# - 访问公共(public)保管箱文件夹中的所有保管箱图像

c# - MemoryStream.Read 不会将字节复制到缓冲区 - c#

java - 将数据导入二维公共(public)数组

css - 我如何在这个 div 的中心对齐 3 个图像?

mysql - 如何在同一表中具有匹配 id 的行上将 field_name 设置为 GROUP_CONCAT?

java - Hibernate (hbm) - 合并容器对象后使用 where 子句刷新集合

python - 如何在 Python 中合并两个 json 文件?