如何基于QRCode制作二维码插件(一)支持三色渐变,中心LOGO图标

QRCode

制作一款适合自己使用的QRCode插件,基于QRCode代码更改

qrcode源码:https://github.com/davidshimjs/qrcodejs

比起qrcode扩展的功能的有

  • Css选择器(Qrcode仅支持id选择器)
  • 二维码背景颜色渐变
  • 支持中心图标(可调整图片的大小)

QRCode是如何制作二维码

三种方式:

  • Canvas :绘制成功后生成img标签,可通过css控制样式

  • SVG:

    需添加useSVG:ture属性,生成的二维码是一张 svg 矢量图 无img标签

  • Table构造点阵

var useSVG = document.documentElement.tagName.toLowerCase() === "svg";
// Drawing in DOM by using Table tag
var Drawing = useSVG ? svgDrawer : !_isSupportCanvas() ? (function () {
    ... }

这段代码说的是先判断是否支持SVG,如果支持则使用SVG;否则判断是否支持Canvas,如果支持则使用Canvas,如果不支持,就使用Table来构造点阵

插件扩展功能是如何实现

两种实现方式(只针对canvas生成的二维码)

一种是纯画Canvas,没有img标签,所有的属性只能通过代码控制,无法通过css控制

一种是利用canvas生成两张图片,一张二维码,一张中心图标,中心图标覆盖在二维码上方,可通过css控制

中心图标的生成

可直接参考https://blog.csdn.net/chy555chy/article/details/85785819的文章

可通过iconWidth ,iconHeight设置icon的大小

但这个方法是纯画Canvas的

QRCode = function (el, vOption) {
   
		const ratio = 0.3;
		this._htOption = {
   
			width : 256,
			height : 256,
			typeNumber : 4,
			colorDark : "#000000",
			colorLight : "#ffffff",
		};
        this._htOption.iconWidth=this._htOption.width * ratio;
        this._htOption.iconHeight=this._htOption.width * ratio;
     }

定义默认的图标大小为二维码的三分之一,默认为正方形的图标

        /**
         * Draw the icon of QR code Center
         * @param {QRCode} oQRCode
         */
        Drawing.prototype.addIcon =  async function (iconSrc) {
   
            //通过ES6的async/await语法将异步的Promise转为同步方法
            const image = await new Promise((resolve, reject) => {
   
                const image = new Image();
            image.src = iconSrc;
            image.crossOrigin='Anonymous';
            image.onload=()=>{
   resolve(image);};
        });
            const ratio  = 0.3;//三分之二开始
            const marginRatio = (1-ratio)/2;
            const x = this._htOption.width * marginRatio;
            
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Vue中使用qrcode生成二维码,你可以按照以下步骤进行操作: 1. 首先,你需要安装qrcode插件,你可以使用npm命令来安装:npm i qrcode -S 。 2. 然后,在你的Vue组件中引入qrcode插件:import QRCode from 'qrcode' 。 3. 接下来,在你的Vue组件的template中添加一个img标签,用于显示生成的二维码图片。例如: ``` <template> <div> <img :src="QRImgUrl" /> </div> </template> ``` 4. 在Vue组件的script中,使用QRCode生成二维码的方法。首先,你需要定义一个data属性QRImgUrl用于存储生成的二维码图片的URL。然后,在created钩子函数中调用getQRcode方法来生成二维码。getQRcode方法使用QRCode.toDataURL来生成二维码图片的DataURL,并将生成的URL赋值给QRImgUrl。例如: ``` <script> import QRCode from 'qrcode' export default { data() { return { QRImgUrl: '', QRlink:'www.xxx.com' } }, created() { this.getQRcode() }, methods: { getQRcode(){ QRCode.toDataURL(this.QRlink, { errorCorrectionLevel: 'L', margin: 2, width: 128 }, (err, url) => { if (err) throw err this.QRImgUrl = url }) } } } </script> ``` 这样,当你的Vue组件被创建时,getQRcode方法会被调用,生成二维码并将URL赋值给QRImgUrl,从而显示在页面上 。 如果你想对生成的二维码进行更详细的配置,你可以参考以下步骤: 1. 在getQRcode方法中定义一个opts对象,用于配置生成二维码的各种参数,比如容错级别、二维码类型、二维码质量、留白边距等 。 2. 修改QRCode.toDataURL方法的第二个参数为opts,这样可以根据opts的配置生成更加符合你需求的二维码 。 例如,你可以按照以下方式配置opts对象: ```javascript let opts = { errorCorrectionLevel: "L",//容错级别 type: "image/png",//生成的二维码类型 quality: 0.3,//二维码质量 margin: 5,//二维码留白边距 width: 128,//宽 height: 128,//高 text: "http://www.xxx.com",//二维码内容 color: { dark: "#666666",//前景色 light: "#fff"//背景色 } }; ``` 然后,将opts作为QRCode.toDataURL方法的第二个参数传入: ```javascript QRCode.toDataURL(this.QRlink, opts, (err, url) => { if (err) throw err this.QRImgUrl = url }) ``` 这样,你就可以根据opts的配置生成定制化的二维码 。 综上所述,你可以按照以上步骤在Vue中使用qrcode生成二维码,并根据需要进行详细的配置 。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值