使用Zxing生成二维码

您所在的位置:网站首页 场内交易和场外交易的利弊 使用Zxing生成二维码

使用Zxing生成二维码

2024-02-06 04:20| 来源: 网络整理| 查看: 265

前言:

需求描述:用户知道链接地址,但是不想点击链接,想通过扫码访问到指定网站;这时用户就只给我一个url地址,让我给他生成一个二维码!

对Zxing的了解:   ZXing,一个支持在图像中解码和生成条形码(如二维码、PDF 417、EAN、UPC、Aztec、Data Matrix、Codabar)的库。ZXing(“zebra crossing”)是一个开源的、多格式的、用Java实现的一维/二维条码图像处理库,具有到其他语言的端口。

先看一下实现效果:

在这里插入图片描述

代码实现过程:

1.引入谷歌的zxing依赖

com.google.zxing core 3.3.0 com.google.zxing javase 3.3.0

2.二维码生成工具类

import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.OutputStream; import java.util.Hashtable; /** * 二维码生成工具类 */ public class QrCodeUtils { private static final String CHARSET = "utf-8"; public static final String FORMAT = "JPG"; // 二维码尺寸 private static final int QRCODE_SIZE = 300; /** * 生成二维码 * @param content 二维码内容 * @return 图片 * @throws Exception */ public static BufferedImage createImage(String content) throws Exception { // 二维码参数设置 Hashtable hints = new Hashtable(); // 安全等级,最高h hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // 编码设置 hints.put(EncodeHintType.CHARACTER_SET, CHARSET); // 设置margin=0-10 hints.put(EncodeHintType.MARGIN, 1); // 创建矩阵容器 BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE, hints); int width = bitMatrix.getWidth(); int height = bitMatrix.getHeight(); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 矩阵转换图像 for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF); } } return image; } /** * 生成二维码 * * @param content 内容 * @param output 输出流 * @throws Exception */ public static void encode(String content, OutputStream output) throws Exception { BufferedImage image = QrCodeUtils.createImage(content); ImageIO.write(image, FORMAT, output); } }

3.控制层

import com.king.science.util.QrCodeUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; /** * @author xf * @version 1.0.0 * @ClassName QRCodeController * @Description TODO 二维码生成 * @createTime 2020.10.21 14:47 */ @Controller public class QRCodeController { /** * 用户传urlPath,根据urlPath生成相应的二维码 * @param request * @param response */ @GetMapping("/createQrCode") public void createQrCode(HttpServletRequest request, HttpServletResponse response) { String urlPath = request.getParameter("urlPath"); //String urlPath = "https://blog.csdn.net/weixin_44146379"; try { OutputStream os = response.getOutputStream(); //requestUrl:需要生成二维码的连接,os:响应输出流 QrCodeUtils.encode(urlPath, os); } catch (Exception e) { e.printStackTrace(); } } }

4.访问定义的controller实现生成的 二维码: 在这里插入图片描述 5.测试:使用手机扫码

在这里插入图片描述 测试成功,可正常访问(我上面放的链接地址是我的博客地址)

总结:

二维码简单的实现就是如上过程,当然二维码还有很多优美样式操作(如:加Logo,加边框等等)如果大家感兴趣可百度查询,我上面实现的是一个简单的实现过程,感谢阅读



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3