java生成二维码—web方式

文章描述了一个使用Vue.js前端框架结合后端Java接口生成二维码的过程。用户在文本框输入字符,点击按钮后,前端调用后台接口,将数据转化为二维码的base64字符串,然后在页面上显示二维码图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

呈现效果

在文本框中输入字符,点击生成二维码按钮,调用后台生成二维码接口生成二维码并返回二维码 base64字符串,字符串中信息添加到 img标签 src属性中即可显示二维码图片。

前端代码实现

vue 文件代码

主要还是以实现功能为主,就没有做任何布局和美化
<template>
    <div>
        <inputtype="text"v-model="qrCodeText"><buttontype="button" @click="clickGetCode()">生成二维码</button>
        <img:src="'data:image/png;base64,'+ this.base64QrCode"style="width: 20vw;">
    </div>
</template>
<script>
import { getQrCode } from'@/api/downloadDoc/index'// 引入接口exportdefault {
  name: 'QrCode',
  data () {
    return {
      qrCodeText: '',
      base64QrCode: ''
    }
  },
  // 2、添加自定义组件components: {
  },
  // 初始化调用方法
  created () {

  },
  methods: {
    clickGetCode () {
      // 调用后台接口生成二维码getQrCode(this.qrCodeText).then(data => {
        // 返回的字符串赋值给 src 属性绑定的变量this.base64QrCode = data
      })
    }

  }
}
</script>

请求后台代码

import request from'../http'// 使用实例

export functiongetQrCode (qrCodeText) {
  returnrequest({
    url: '/ming/getQrCode?qrCodeText=' + qrCodeText,
    method: 'get'
  })
}

后端代码实现

后端代码实现请参考之前文章: java生成二维码图片、转base64 - 掘金 (juejin.cn)
需要注意的是之前文章是直接写死的硬编码,这里是需要提供接口给前端,之前是介绍了两种方法生成二维码,这里需要使用的是第一种方法转 base64之后把字符串返回给前端。以下是修改过后的代码可供参考:
@RequestMapping("/getQrCode")
publicStringgetQrCode(@RequestParam String qrCodeText){
    String base64 = "";
    // 需要生成的二维码的文字、地址String QrCodeStr = qrCodeText;
    // 创建二维码try {
        Map<EncodeHintType, String> charcter = new HashMap<>();
        // 设置字符集
        charcter.put(EncodeHintType.CHARACTER_SET, "UTF-8");
        // 设置二维码的四个参数   需要生成的字符串,类型设置为二维码,二维码宽度,二维码高度,字符串字符集
        BitMatrix bitMatrix = newMultiFormatWriter()
                .encode(QrCodeStr, BarcodeFormat.QR_CODE, 500, 500, charcter);
        // 二维码像素,也就是上面设置的 500int width = bitMatrix.getWidth();
        int height = bitMatrix.getHeight();
        // 创建二维码对象
        BufferedImage image = newBufferedImage(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) ? BLACK : WHITE);
            }
        }
        // 1、第一种方式// 生成的二维码图片对象转 base64
        ByteArrayOutputStream stream = newByteArrayOutputStream();
        // 设置图片的格式
        ImageIO.write(image, "png", stream);
        // 生成的二维码base64
        base64 = Base64.encode(stream.toByteArray());
    } catch (Exception e) {
        e.printStackTrace();
    }
    return base64;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值