react 生成中间镶嵌名字的小程序二维码并下载

1.需要安装两个插件

import QRCode from 'qrcode.react';
import domtoimage from 'dom-to-image';

2.生成文字图片
dom代码

	const [textImg, setTextImg] = useState('')   // 文字图片链接

    // 调用字体转图片
    useEffect(()=>{
        getImg()
    },[visible])

    const getImg = () => {
        const node = document.getElementById("node");
        domtoimage.toPng(node).then((url) => {
            setTextImg(url)
        }).catch(() => {
            console.log("error")
        })
    }
	//dom
	<div className="node-content">
	   <div id="node" style={{ 'width': '42px' }}>
	        <span className="node-title">{name?.substring(0,3)}</span>
	    </div>
	</div>

3.生成二维码

 <QRCode
   id="qrCode"
      value={'https://www.baidu.com'}
      size={138} // 二维码的大小
      fgColor="#000000" // 二维码的颜色
      style={{ margin: 'auto' }}
      imageSettings={{ // 二维码中间的图片
          src: textImg,
          height: 15,
          width: 30,
          excavate: true, // 中间图片所在的位置是否镂空
      }}
  />

4.下载

const codeDown = (() => {
     const canvasImg = document.getElementById('qrCode'); // 获取canvas类型的二维码
      const img = new Image();
      img.src = canvasImg.toDataURL('image/png'); // 将canvas对象转换为图片的data url
      const downLink = document.getElementById('down_link');
      downLink.href = img.src;
      downLink.download = '二维码'; // 图片name
  })
  <a id="down_link" onClick={codeDown}>下载二维码</a>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值