【转】【Java】二维码生成及图片合成

转自:https://blog.csdn.net/Alian_1223/article/details/117332164

在 pom.xml 引入 maven 配置:

<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>core</artifactId>
    <version>3.4.1</version>
</dependency>

<!--如果时web项目时导入javase-->
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>javase</artifactId>
    <version>3.4.1</version>
</dependency>

然后在 Maven 面板点击 重新加载所有 Maven 项目:

 接下来就可以绘制二维码:

// 二维码绘制
try {
    var map = new HashMap<EncodeHintType, Object>();
    map.put(EncodeHintType.MARGIN, 0);
    var matrix = new MultiFormatWriter().encode("二维码内容", BarcodeFormat.QR_CODE, 200, 200, map);
    var qr = MatrixToImageWriter.toBufferedImage(matrix);
    g2d.drawImage(qr, 20, 20, null);
} catch (WriterException e) {
    throw new RuntimeException(e);
}

代码片段中,200 是二维码大小,20 是二维码在画布中位置,g2d 是画布的 Graphics 对象,可以这样创建画布:

var image = new BufferedImage(600, 600, BufferedImage.TYPE_INT_RGB);
var g2d = image.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);

输出到文件:

// 输出到文件
File file = new File("D:\\qr.png");
try {
    ImageIO.write(image, "png", file);
} catch (IOException ex) {
    ex.printStackTrace();
}

或者绘制在现有图片上:

var image2 = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
var g2 = image2.createGraphics();
g2.drawImage(image, 0, 0, null);
g2.dispose();

 

posted on 2023-06-26 15:50  z5337  阅读(182)  评论(0)    收藏  举报