java 合并一张图与另一张图,如果图不够大,则重复覆盖
时间: 2023-08-08 08:05:45 浏览: 48
可以使用 Java 的 Graphics2D 类来实现图像的合并操作。以下是一个简单的示例代码,可以将图片1重复覆盖到图片2上:
```java
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageMergeExample {
public static void main(String[] args) throws IOException {
BufferedImage image1 = ImageIO.read(new File("image1.png"));
BufferedImage image2 = ImageIO.read(new File("image2.png"));
int width = Math.max(image1.getWidth(), image2.getWidth());
int height = Math.max(image1.getHeight(), image2.getHeight());
BufferedImage result = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = result.createGraphics();
int x = 0;
int y = 0;
while (y < height) {
while (x < width) {
g2d.drawImage(image1, x, y, null);
x += image1.getWidth();
if (x >= width) {
break;
}
}
x = 0;
y += image1.getHeight();
if (y >= height) {
break;
}
}
g2d.dispose();
ImageIO.write(result, "png", new File("result.png"));
}
}
```
在这个示例代码中,我们首先读取了两张图片,然后计算出了它们的最大宽度和高度。接着,创建了一个新的 BufferedImage 对象作为合并结果,并获取了 Graphics2D 对象以便进行绘制操作。
在循环中,我们使用 drawImage() 方法将图片1重复覆盖到图片2上。具体来说,我们先将图片1绘制到 (x, y) 坐标处,然后将 x 坐标增加 image1.getWidth(),以便在下一次循环中将图片1绘制到正确的位置上。当 x 坐标超过了合并结果的宽度时,我们就跳出内层循环。接着,将 x 坐标重置为 0,将 y 坐标增加 image1.getHeight(),以便在下一行绘制图片1。当 y 坐标超过了合并结果的高度时,我们就跳出循环,绘制操作结束。
最后,我们释放了 Graphics2D 对象,并将合并结果保存为一个新的图片文件。