专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

Hutool工具类生成二维码,PC端展示(保姆教程)

ins518 2024-09-18 17:43:50 技术文章 16 ℃ 0 评论


背景

昨天有一个需求,通过扫描二维码来查看详情,一开始去查资料发现都是写一个复杂的工具类,然后再在接口中调用,感觉很麻烦,突然想起来有Hutool工具类,于是就看了一下官方文档,中间不是很顺利,于是想记录一下这次的操作。(hutool的官方文档我放在评论区了)

后端:Spring-boot

前端:Vue

下面直接上代码

后端

package 自己的包名;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.img.ImgUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;

/**
 * 生成二维码的工具类
 * @return Base64编码的字符串
**/
public class QrCodeGenerator {
    /**
     * 生成二维码并返回Base64编码的字符串
     *
     * @param content  二维码内容
     * @param width    二维码宽度
     * @param height   二维码高度
     * @return Base64编码的字符串
     */
    public static String generateQrCode(String content, int width, int height) {
        // 生成二维码图片
        BufferedImage image = QrCodeUtil.generate(content, width, height);
        // 将二维码图片转换成Base64编码的字符串
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        ImgUtil.writePng(image, outputStream);
        return "data:image/png;base64," + Base64.encode(outputStream.toByteArray());
    }
}
//方法中直接调用刚才的工具类,三个参数分别为你要扫二维码后看到的内容,二维码宽,高

//生成后返回给前端一个Base64编码的字符串
String QRCodeString = QrCodeGenerator.generateQrCode("https://www.toutiao.com/c/user/token/MS4wLjABAAAAeyCJAoPTA1AU8m0fecG-1W3yZg_PBmHYJ7TMXSyzHw7kspNBNKHsd4wf0zmtd3XJ/?source=mine_profile&tab=article",130,130);
        entity.setQRCodeString(QRCodeString);

实体中属性

/**
     * 二维码图片转换成Base64编码的字符串
     */
    @TableField(exist = false)
    private java.lang.String QRCodeString;

前端

//qrCodeUrl就是后台传过来的Base64编码的字符串
<div class='carousel-second'>
	<td>
  	<p style="display: inline;color: #92979C;font-size: 14px;float: left;width:43%;margin-top: 5%">房源信息二维码:</p>
		<img style="float: right;width: 47%;margin-right: 28px" :src="qrCodeUrl">
  </td>
</div>

data() {
			return {
        qrCodeUrl:'',
			}
		},
      
 methods: {
   //查询详情(后台生成二维码)
 			queryDetailById(brandId) {
				let that = this
					getAction(that.url.queryDetail, {
						brandId: brandId
					}).then(res => {
						if (res.success) {
							that.setInfoMessage(res.result)
						}
						that.loadding = false
					})
			},
			setInfoMessage(info) {
				this.houseInfo = info.records[0]
        //二维码  Base64编码的字符串
        this.$set(this,'qrCodeUrl',this.houseInfo.qrcodeString)
			},
 }

成功后,看前端控制台请求网址应该是这样的


哦,对了,二维码还可以中间加入logo和底部加文字,感兴趣的小伙伴可以评论区讨论一下。


如果还有什么问题,欢迎大家私信我!我是Java-Talk,下期见!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表