工具类:Java 网页前端二维码生成 (maven:net.glxn.qrgen 下的QrCode方式)

二维码生成的方式有多种,今天博主来介绍其中一种的使用方法。

首先,我们在pom.xml中插入以下代码来下载其jar包支持:

<dependency>
    <groupId>net.glxn</groupId>
    <artifactId>qrgen</artifactId>
    <version>1.4</version>
</dependency>

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

  我们可以看到需要导入两种maven,博主在通过查看底层,发现,如果非得要生成二维码的话,单单引入第二个maven文件就行,那第一个maven是有什么作用呢?其实第一个maven文件相当于第二个maven文件的外包装,使用其可以减少许多代码量,使代码更加直观

  接下来看一下如何使用,下面,博主将写一个Controller类,读者要的话可以直接copy拿去用(记得先导上面的maven文件哦)。

package com.atimynyc.common;

import com.google.zxing.EncodeHintType;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import net.glxn.qrgen.QRCode;
import net.glxn.qrgen.exception.QRGenerationException;
import net.glxn.qrgen.image.ImageType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;

/**
 * @author atimynyc
 * @version 1.0
 * @title 二维码生成Controller
 * @email 495906027@qq.com
 * @since 2018/12/12
 */
@Controller
@RequestMapping("qrCode/")
public class QrCodeController {

	private static final Logger LOGGER = LoggerFactory.getLogger(QrCodeController.class);

	/**
	 * 生成二维码
	 * @param res HttpServletResponse
	 * @param url 需要转换的url
	 * @param width 二维码宽度 默认250
	 * @param height 二维码高度 默认250
	 * @throws IOException
	 */
	@RequestMapping("makeQrCode")
	public void makeQrCode(HttpServletResponse res, String url, Integer width, Integer height) throws IOException {
		LOGGER.info("[二维码]====二维码生成 传入参数 url={} width={} height={}", url, width, height);
		if (url == null || "".equals(url)) {
			LOGGER.warn("[二维码]====传入url为空");
			return;
		}
		width = (width == null ? 250 : width);
		height = (height == null ? 250 : height);
		if (url != null && !"".equals(url)) {
			OutputStream stream = null;
			try {
				QRCode qrCode = QRCode.from(url);
				//定义二维码的参数
				qrCode.to(ImageType.PNG);
				qrCode.withSize(width, height);
				qrCode.withHint(EncodeHintType.CHARACTER_SET, "utf-8");
				qrCode.withHint(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
				qrCode.withHint(EncodeHintType.MARGIN, 2);
				//生成二维码
				stream = res.getOutputStream();
				qrCode.writeTo(stream);
			} catch (QRGenerationException e) {
				e.printStackTrace();
				LOGGER.warn("[二维码]====生成二维码时发生异常 e={}", e);
			} finally {
				if (stream != null) {
					stream.flush();
					stream.close();
				}
			}

		}
	}

}

那我们如何在前端获取呢?我们直接写个<img>标签,将其src的值设为调用该Controller的url就行。如下:

<img id="qrCode" class="pre-img" alt="二维码生成失败,请联系后台管理员" style="vertical-align: middle;height: 250px;display: block;">
<script>
        var url = ;//你要生成二维码的url是什么就写什么,比如:http://www.baidu.com
        var width = 250;
        var height = 250;        
        $("#qrCode").attr("src","(这里填你自己的项目url前缀)/qrCode/makeQrCode?url="+url+"&width="+width+"&height="+height);
</script>

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值