Java使用graphics2d图片合成(二维码,logo,文字),圆角图片黑框问题_刘新博客文章专栏
网站首页 文章专栏 Java使用graphics2d图片合成(二维码,logo,文字),圆角图片黑框问题
Java使用graphics2d图片合成(二维码,logo,文字),圆角图片黑框问题
编辑时间:2019-12-07 16:26:09.0 作者:刘新 浏览量:203

一、问题前后效果

  处理之后

 

二、赋代码

    public static BufferedImage resizeImage(int x, int y, BufferedImage bfi){
//      问题解决前的实现方式
//      BufferedImage bufferedImage = new BufferedImage(x, y, BufferedImage.TYPE_INT_RGB);
//      bufferedImage.getGraphics().drawImage(
//                bfi.getScaledInstance(x, y, Image.SCALE_SMOOTH), 0, 0, null);

        //设置背景透明
        BufferedImage image = new BufferedImage(x,y,BufferedImage.TYPE_INT_RGB);
        Graphics2D g2d = image.createGraphics();
        image = g2d.getDeviceConfiguration().createCompatibleImage(x,y,Transparency.TRANSLUCENT);
        g2d.dispose();

        g2d = image.createGraphics();
        g2d.drawImage(bfi,0,0,x,y,null);
        return image;
    }
//设置图片大小
BufferedImage background = resizeImage(bgWidth,bgHeight, ImageIO.read(new File(path+"/"+backgroundName)));

//创建二维码
String qrName = System.currentTimeMillis()+".png";
createQrCode(url,path,qrName);
//设置二维码的大小路径
BufferedImage qrCode = resizeImage(320,320,ImageIO.read(new File(path+"/"+qrName)));
Graphics2D g = background.createGraphics();
g.setColor(new Color(0,0,0,0));
g.fillRect(0,0,bgWidth,bgHeight);
g.setBackground(new Color(255,255,255,255));
g.setFont(new Font("黑体",Font.PLAIN,32));
//设置画笔,设置Paint属性
g.setPaint(Color.WHITE);

//计算文字长度,计算居中的x点坐标
FontMetrics fm = g.getFontMetrics();
int textWidth = fm.stringWidth(shopName);
int widthX = (bgWidth - textWidth) /2;
//添加图片中需要的文字
g.drawString(shopName,widthX,coordi[1]);

//在背景图片上添加二维码图片
g.drawImage(qrCode, coordi[2], coordi[3], qrCode.getWidth(), qrCode.getHeight(), null);
g.dispose();
ImageIO.write(background, "png", new File(path+"/"+shopId+".png"));

 

完成,这个问题终于解决,Graphics2D 的API都要快看完了。

 

来说两句吧
最新评论