使用 Graphics2D 进行图片合成 第一遍合成出来的是空白,必须再读一遍这个合成出来空白的图片才能加上logo


 
 //拿到二维码
        BufferedImage twodimensioncode  = ImageIO.read(new File("C:/Users/HY/Desktop/newPic12312312.jpg"));
 
        //绘制
        Graphics2D g = twodimensioncode.createGraphics();
        //读取logo
        BufferedImage logo = ImageIO.read(new File("C:/Users/HY/Desktop/a1231.png"));
        //设置二维码大小,太大,会覆盖二维码,此处20%
        int logoWidth = logo.getWidth(null) > twodimensioncode.getWidth()*3 /10 ? (twodimensioncode.getWidth()*3 /10) : logo.getWidth(null);
        int logoHeight = logo.getHeight(null) > twodimensioncode.getHeight()*3 /10 ? (twodimensioncode.getHeight()*3 /10) : logo.getHeight(null);
        // 确定二维码的中心位置坐标,设置logo图片放置的位置
        int x = (twodimensioncode.getWidth() - logoWidth) / 2;
        int y = (twodimensioncode.getHeight() - logoHeight) / 2;
        g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
                RenderingHints.VALUE_INTERPOLATION_BILINEAR);
 
        //开始合并绘制图片
        g.drawImage(logo, x, y, logoWidth, logoHeight, null);
        g.drawRoundRect(x, y, logoWidth, logoHeight, 15 ,15);
 
        g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
 
        g.dispose();
        logo.flush();
        twodimensioncode.flush();
        ImageIO.write(twodimensioncode, "jpeg", new File("C:/Users/HY/Desktop/newPic12312312.jpg"));
        System.out.println("创建成功");

img