java实现生成自定义二维码
增加依赖:
<dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.4.1</version><scope>compile</scope></dependency>
代码如下:
/*** 生成包含字符串信息的二维码图片** @param outputStream 文件输出流路径* @param content 二维码携带信息* @param qrCodeSize 二维码图片大小* @param imageFormat 二维码的格式* @throws WriterException* @throws IOException*/public static boolean createQrCode(OutputStream outputStream, String content, int qrCodeSize, String imageFormat) throws WriterException, IOException {//设置二维码纠错级别MAPHashtable<EncodeHintType, ErrorCorrectionLevel> hintMap = new Hashtable<EncodeHintType, ErrorCorrectionLevel>();hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L); // 矫错级别QRCodeWriter qrCodeWriter = new QRCodeWriter();//创建比特矩阵(位矩阵)的QR码编码的字符串String contentCharset = new String(content.getBytes("UTF-8"), "ISO-8859-1");BitMatrix byteMatrix = qrCodeWriter.encode(contentCharset, BarcodeFormat.QR_CODE, qrCodeSize, qrCodeSize, hintMap);// 使BufferedImage勾画QRCode (matrixWidth 是行二维码像素点)int matrixWidth = byteMatrix.getWidth();BufferedImage image = new BufferedImage(matrixWidth - 200, matrixWidth - 200, BufferedImage.TYPE_INT_RGB);image.createGraphics();Graphics2D graphics = (Graphics2D) image.getGraphics();graphics.setColor(Color.WHITE);graphics.fillRect(0, 0, matrixWidth, matrixWidth);// 使用比特矩阵画并保存图像graphics.setColor(Color.BLACK);for (int i = 0; i < matrixWidth; i++) {for (int j = 0; j < matrixWidth; j++) {if (byteMatrix.get(i, j)) {graphics.fillRect(i - 100, j - 100, 1, 1);}}}return ImageIO.write(image, imageFormat, outputStream);}
调用:
String url=System.getProperty("user.dir")+"/Code.jpg"; //输出路径可自定义FileOutputStream fileOutputStream = new FileOutputStream(url);excelUtil.createQrCode(fileOutputStream, "12345", 900, "JPEG");
结果:
可扫描验证结果:12345