vue3 根据vue-qr生成带logo图片的二维码

官网地址 vue-qr - npm 

 vue有两种生成二维码的方式,qrcode、vue-qr(有icon可以加图片)

安装插件

npm install vue-qr --save

引用方式

// vue2.0
import VueQr from 'vue-qr'

// vue3.0 (support vite)
import vueQr from 'vue-qr/src/packages/vue-qr.vue'
...
{
  components: {VueQr}
}

页面代码

<el-form style="text-align:center">
    <div class="dialog-footer"  >{{gameInfo.name}}:{{gameInfo.code}}</div>
    <vue-qr
        :text='contentValue' //二维码内容
        :logoSrc='logoSrc' //logo
        :logoScale = 0.2 //logo大小
        :margin = 10
    ></vue-qr>
</el-form>

js代码

/**
 * 生成二维码
 * @param classId
 * @param row
 * @returns {Promise<void>}
 */
const classIdMarkDev = ref(false) //二维码弹框显示
const gameInfo = ref({}) //二维码内容
const logoSrc = ref({}) //图片地址
const contentValue = ref({}) //二维码内容json

let quickMark = async (classId, row) => {
  console.log(row)
  // console.log(row.ID)

  //数据
  gameInfo.value = {
    gameId: row.ID,
    name: row.name,
    code: row.code,
    creationTime: parseInt(new Date().getTime() / 1000)
  }
  classIdMarkDev.value = true

  //延迟加载等DOM元素加载完再执行
  nextTick(() => {
    logoSrc.value = quickMarkLogoUrl.value
    //二维码数据,扫描二维码后拿到的内容
    contentValue.value = JSON.stringify(gameInfo.value)
    console.log('content',contentValue)
  })
}

效果: 

参数说明
text二维码内容 (必需)
size尺寸, 长宽一致, 包含外边距 (必需)
margin二维码图像的外边距, 默认 20px (可选)
dotScale数据区域点缩小比例,默认为0.35 (可选)
correctLevel容错级别 0-3 (可选)
whiteMargin若设为 true, 背景图外将绘制白色边框(默认是true) (可选)
bindElement指定是否需要自动将生成的二维码绑定到HTML上(默认是true) (可选)
callback生成的二维码 Data URI 可以在回调中取得,第一个参数为二维码 data URL, 第二个参数为 props 传过来的 qid(因为二维码生成是异步的,所以加个 id 用于排序)
颜色
colorDark实点的颜色 (可选)
colorLight空白区的颜色 (可选)
autoColor若为 true, 背景图的主要颜色将作为实点的颜色, 即 colorDark,默认 true // 若设置了 autoColor,则 colorDark 和 colorLight 都将被忽略。 (可选)
背景图像
bgSrc欲嵌入的背景图地址 (可选)
gifBgSrc欲嵌入的背景图 gif 地址,设置后普通的背景图将失效。设置此选项会影响性能 (可选)
backgroundColor背景色 (可选)
backgroundDimming叠加在背景图上的颜色, 在解码有难度的时有一定帮助 (可选)
logo图像
logoSrc嵌入至二维码中心的 LOGO 地址 (可选 )
logoScale用于计算 LOGO 大小的值, 过大将导致解码失败, LOGO 尺寸计算公式,logoScale(size-2margin), 默认 0.2 (可选 )
logoMargin标识周围的空白边框, 默认为0 (可选 )
logoBackgroundColor背景色,需要设置 logo margin (可选 )
logoCornerRadius标识及其边框的圆角半径, 默认为0 (可选)
后处理
binarize若为 true, 图像将被二值化处理, 未指定阈值则使用默认值,默认是false (可选)
binarizeThreshold(0 < threshold < 255) 二值化处理的阈值 (可选)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你可以使用以下步骤来使用 vue-qr 生成二维码并下载二维码: 1. 安装 vue-qr 你可以使用以下命令来安装 vue-qr: ``` npm install vue-qr --save ``` 2. 在 Vue 组件中使用 vue-qr 你可以在 Vue 组件中使用 vue-qr,并传递需要生成二维码的文本作为参数: ```html <template> <div> <qr :text="qrText"></qr> <button @click="downloadQR">Download QR Code</button> </div> </template> <script> import QR from 'vue-qr' export default { components: { QR, }, data() { return { qrText: 'https://www.example.com', } }, methods: { downloadQR() { const canvas = document.querySelector('canvas') const dataURL = canvas.toDataURL('image/png') const link = document.createElement('a') link.download = 'qr-code.png' link.href = dataURL document.body.appendChild(link) link.click() document.body.removeChild(link) }, }, } </script> ``` 在上面的例子中,我们首先导入 vue-qr 并将其注册为组件。然后,我们定义了一个 data 属性 `qrText`,它包含了需要生成二维码的文本。在模板中,我们使用 `<qr>` 标签来渲染二维码。我们还添加了一个按钮,以便用户可以下载二维码。 在 `downloadQR()` 方法中,我们获取了 Canvas 元素并将其转换为 PNG 格式的数据 URL。然后,我们创建了一个 `<a>` 元素,并将其下载属性设置为 `qr-code.png`,并将其 `href` 属性设置为数据 URL。最后,我们将 `<a>` 元素添加到页面中,模拟用户单击该元素并将其从页面中删除。 3. 运行应用程序 现在,你可以运行你的应用程序并生成并下载二维码

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值