Java如何将两张图片合并一起为一张

该代码示例展示了如何使用Java的BufferedImage和Graphics2D类将一张小尺寸图片覆盖在另一张大图片的指定位置,生成合并后的新图片,并能保存到本地。主要方法包括读取图片、创建合并图像、绘制图片以及保存结果。
摘要由CSDN通过智能技术生成

1,背景

某一张小尺寸图片需要覆盖在另一张大图片的某处

2,流程


    /**
     * @param img1 待合并的第一张图
     * @param img2 带合并的第二张图
     * @return 返回合并后的BufferedImage对象
     */
    private static BufferedImage mergeImg(BufferedImage img1, BufferedImage img2) {
        int w1 = img1.getWidth();
        int h1 = img1.getHeight();
        int h2 = img2.getHeight();
        int w2 = img2.getWidth();
        Graphics2D graphics2D = null;
        // 生成新图片
        BufferedImage destImage = null;
        destImage = new BufferedImage(w1, h1, BufferedImage.TYPE_INT_RGB);
        graphics2D = destImage.createGraphics();
        //插入的位置坐标需要手动尝试
        graphics2D.drawImage(img1, 0, 0, w1, h1, null);
        graphics2D.drawImage(img2, 0, 0, w2, h2, null);
        graphics2D.dispose();
        return destImage;
    }

    /**
     * 生成新图片到本地
     */
    public static void writeImageLocal(String newImage, BufferedImage img) {
        if (newImage != null && img != null) {
            try {
                File outputfile = new File(newImage);
                ImageIO.write(img, "jpg", outputfile);
            } catch (IOException e) {
                System.out.println(e.getMessage());
            }
        }
    }

    public static void main(String[] args) throws Exception {
        InputStream is1 = new FileInputStream("/Users/XXX/Desktop/picture1.png");
        InputStream is2 = new FileInputStream("/Users/XXXDesktop/picture2.png");
        BufferedImage readImg1 = ImageIO.read(is1);
        BufferedImage readImg2 = ImageIO.read(is2);
        BufferedImage mergeImg = mergeImg(readImg1, readImg2);
        writeImageLocal("/Users/XXX/Desktop/2.png", mergeImg);
    }

3,结果

素材1、2:
在这里插入图片描述
在这里插入图片描述

结果:(坐标需手动尝试)
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java可以借助第三方库ImageIO和BufferedImage实现多张图片竖向合并一张图片里。 以下是一个简单的示例代码: ```java import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class ImageMerger { public static void main(String[] args) throws IOException { // 读取多张图片 BufferedImage image1 = ImageIO.read(new File("image1.jpg")); BufferedImage image2 = ImageIO.read(new File("image2.jpg")); BufferedImage image3 = ImageIO.read(new File("image3.jpg")); // 计算合并图片的尺寸 int maxWidth = Math.max(image1.getWidth(), Math.max(image2.getWidth(), image3.getWidth())); int totalHeight = image1.getHeight() + image2.getHeight() + image3.getHeight(); // 创建新的BufferedImage对象,用于合并图片 BufferedImage mergedImage = new BufferedImage(maxWidth, totalHeight, BufferedImage.TYPE_INT_RGB); // 将多张图片绘制到新的BufferedImage对象上 int yOffset = 0; mergedImage.getGraphics().drawImage(image1, 0, yOffset, null); yOffset += image1.getHeight(); mergedImage.getGraphics().drawImage(image2, 0, yOffset, null); yOffset += image2.getHeight(); mergedImage.getGraphics().drawImage(image3, 0, yOffset, null); // 保存合并后的图片 ImageIO.write(mergedImage, "jpg", new File("mergedImage.jpg")); } } ``` 该示例中将三张图片竖向合并一张图片中,并保存为mergedImage.jpg文件。你只需要将示例中的图片路径替换为你需要合并图片路径即可使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值