【转】【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();
浙公网安备 33010602011771号