JS实现动态生成二维码,并在中间插入logo

引用qrcode.js

Github地址:GitHub - davidshimjs/qrcodejs: Cross-browser QRCode generator for javascript

css:

 #qrcode {
    position: relative;
 }
 #qrCodeIco {
    position: absolute;
    top: 0;
    left: 0;
    width: 48px;
    height: 48px;
    background-color: #fff;
    padding: 2px;
    border-radius: 5px;
 }
 #qrCodeImg {
    width: 100%;
    height: 100%;
 }

html:

<div id="qrcode">

</div>

js:

function getUrl() {
  var url = https://baidu.com
  var qrDiv = document.getElementById('qrcode');
  //创建图片,插入id为qrcode的div元素中
  var div = document.createElement('div');
  div.id = 'qrCodeIco';
  var img = document.createElement('img');
  img.id = 'qrCodeImg';
  img.src = './images/logo.png';
  //将img插入到div
  div.appendChild(img);
  qrDiv.appendChild(div);
  makeCode(result.data.url);
  //创建二维码模块
  var qr = document.createElement('div');
  qr.id = 'qrcode'
  //控制logo图标的位置
  var margin = ($("#qrcode").height() - $("#qrCodeIco").height()) / 2;
  $("#qrCodeIco").css("top", margin);
  $("#qrCodeIco").css("left", margin);
}
// 生成二维码
function makeCode(url) {
  $("#qrcode").qrcode({
    render: "canvas",
    text: url,
    width: "163",               //二维码的宽度
    height: "163",              //二维码的高度
    background: "#fff",       //二维码的后景色
    foreground: "#000"        //二维码的前景色
  });
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 qrcode.js生成logo 的二维码。首先,你需要将 logo 转换为 base64 编码的字符串,然后以 data URL 的形式插入二维码中心。 以下是一个例子: ```javascript // 导入 qrcode.js 库 import QRCode from 'qrcode' // 获取二维码容器元素 const qrcodeContainer = document.getElementById('qrcode') // 生成二维码 QRCode.toDataURL('https://example.com') .then(qrcodeDataUrl => { // 创建一个图片元素 const img = document.createElement('img') img.src = qrcodeDataUrl // 创建一个 canvas 元素 const canvas = document.createElement('canvas') canvas.width = img.width canvas.height = img.height // 在 canvas 上绘制二维码图片 const ctx = canvas.getContext('2d') ctx.drawImage(img, 0, 0) // 将 logo 插入二维码中心 const logo = new Image() logo.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==' logo.onload = () => { const logoSize = img.width * 0.2 // logo 大小为二维码的 20% const logoX = (img.width - logoSize) / 2 const logoY = (img.height - logoSize) / 2 ctx.drawImage(logo, logoX, logoY, logoSize, logoSize) // 在容器中插入 logo 的二维码 qrcodeContainer.appendChild(canvas) } }) ``` 注意,以上代码中的 logo 数据 URL 只是一个示例,请替换为你自己的 logo 数据 URL。同时,为了避免跨域问题,你需要将 logo 图片上传到你自己的服务器并获取其数据 URL,而不是直接使用外部图片链接。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值