微信小程序绘制二维码

article/2025/9/27 3:47:14

一、前言

在日常的小程序项目中,会经常遇到需要动态绘制二维码的需求。使用场景很多,例如绘制在海报上,例如制作票务码、核销码等等。
这篇文章是应一位好友的需求而写的,也希望能够给有需要的同学一些帮助。

二、实现原理

使用微信小程序的canvas组件进行绘制,但是在该组件用起来并不是很顺手,所以使用了第三方的框架:
Painter
Painter的Github地址

用你的方法,把这个框架下载下来,里面会有示范代码,我们只需要把其中的核心代码拿出来就行。
对于框架的使用介绍,大家可以前往github浏览,我这就直接上手了。

painter能做的不仅仅只是绘制一个二维码。戳下面链接查看带参海报绘制。
实战篇-制作微信小程序码宣传海报

三、实现代码

前期准备

1、新建components文件夹,放置painter核心代码
在这里插入图片描述
2、新建palette文件夹,放置绘制实现代码
在这里插入图片描述
painter.js代码

export default class LastMayday {palette(viewList) {return (viewList);}
}

3、新建绘制的具体属性信息文件夹posterViewjs,放置例如绘制的大小、位置等信息js。
在这里插入图片描述

二维码绘制属性信息js代码

const getPosterView01 = (qrcodeText) => {const poster01 = {"width": "256px","height": "256px","background": "#f8f8f8","views": [{"type": "qrcode","content": qrcodeText,"css": {"color": "#000000","background": "#ffffff","width": "256px","height": "256px","top": "0px","left": "0px","rotate": "0","borderRadius": "0px"}}]}return poster01
}module.exports = {getPosterView01: getPosterView01
}

实现

实现页面目录结构

在这里插入图片描述

wxml代码

<view class="flex-jc-ac-col" style="margin-top: 200rpx;"><image class="qrcode-img" src="{{imgUrl?imgUrl:''}}" mode="widthFix"></image><button type="primary" style="margin-top: 105rpx;" bindtap="makeQRCodeTap">生成二维码</button>
</view><!-- canvas隐藏 -->
<painter customStyle='position: absolute; left: -9999rpx;' customActionStyle="{{customActionStyle}}"dancePalette="{{template}}" palette="{{paintPallette}}" bind:imgOK="onImgOK" bind:touchEnd="touchEnd"action="{{action}}" use2D="{{true}}" widthPixels="720" />
<!-- canvas隐藏 -->

wxss代码

.qrcode-img{background-color: #999999;height: 300rpx;width: 300rpx;
}

json代码

注意记得在使用的页面引用painter组件

{"usingComponents": {"painter":"/components/painter/painter"},"navigationBarTitleText": "绘制二维码"
}

JS代码

// pages/makeQRCode/makeQRCode.js
import poster from '../../palette/painter'
const posterView = require("../../posterViewjs/posterView")
Page({/*** 页面的初始数据*/data: {imgUrl: null,QRCodeText: "2d44d6c26134f8a109df65897107089a2d44d6c26134f8a109df65897107089a",paintPallette: '',},/*** 生命周期函数--监听页面加载*/onLoad() {},/*** 生命周期函数--监听页面显示*/onShow () {},/** 生成海报点击监听 */makeQRCodeTap() {wx.showLoading({title: '获取海报中',mask: true})// 绘制海报this.makePoster(this.data.QRCodeText)},/** 绘制完成后的回调函数*/onImgOK(res) {wx.hideLoading()// 这个路径就可以作为保存图片时的资源路径// console.log("海报临时路径", res.detail.path)this.setData({imgUrl: res.detail.path})},/** 生成海报 */makePoster(qrcodeText) {wx.showLoading({title: '生成海报中',})// 这是绘制海报所用到JSON数据const viewList = posterView.getPosterView01(qrcodeText)this.setData({paintPallette: new poster().palette(viewList)})},/*** 用户点击右上角分享*/onShareAppMessage() {}
})

实现效果

在这里插入图片描述

四、结语

实际开发中的其他逻辑就不写了。需要同学们自己去考虑异常情况处理等问题啦。

有任何疑问可以在评论区留下。我每天都会进行回复,私聊不回。(为了刷积分)

以上均是本人开发过程中的一些经验总结与领悟,如果有什么不正确的地方,希望大佬们评论区斧正。

💥最后!!!不管这篇文章对你有没有用,既然都看到最后了。
👍赞一个!!!
🤩当然,顺带收藏就最好了。
😎欢迎转载,原创不易,转载请注明出处✍。

😊如果你对小程序开发有兴趣或者正在学习小程序开发,可以关注我。每一篇都是原创,每一篇都是干货噢~。


http://chatgpt.dhexx.cn/article/Jjmn7Qng.shtml

相关文章

微信小程序二维码识别

目前市场上二维码识别的软件或者网站越来越多&#xff0c;可是真正方便&#xff0c;无广告的却少之很少。 于是&#xff0c;自己突发奇想做了一个微信二维码识别的小程序。 包含功能&#xff1a; 1、识别二维码 ①普通二维码 ②条形码 ③只是复制解析出来的数据 2、生成二维码 …

微信小程序扫描普通二维码跳转到小程序指定页面

这个功能的逻辑是什么呢&#xff1f; 二维码就相当于是一个链接 相当于我们点击一个链接跳转到另一个页面 只不过这里是扫码的形式 如何操作 1、首先我们需要在微信公众平台的开发管理——>开发设置&#xff0c;找到&#xff08;扫普通链接二维码打开小程序&#xff09;&…

微信小程序中生成二维码

一般在微信小程序中&#xff0c;生成二维码是一个很常见的场景&#xff0c;但是查阅官方文档&#xff0c;却没有一个现成的可以使用的组件。 经过搜索&#xff0c;生成二维码组件一般是需要借助第三方库来实现。实现的步骤分为&#xff1a; 下载第三方库安装第三方库wxml中生…

微信小程序 — 生成二维码功能

微信小程序实现生成二维码功能。需要用到canvas组件&#xff0c;设置 type为2d. 需要使用js包weapp-qrcode-canvas-2dhttps://github.com/DoctorWei/weapp-qrcode-canvas-2dweapp-qrcode-canvas-2d 是使用新版canvas-2d接口在微信小程序中生成二维码&#xff08;外部二维码&am…

生成微信小程序发布上线后的二维码 、获取微信小程序二维码、微信小程序二维码如何生成?

情景&#xff1a; 1、在微信小程序审核完成&#xff0c;发布到线上后&#xff0c;想通过扫描小程序二维码进入小程序 2、可分享二维码出去&#xff0c;通过二维码扫码进入小程序 方法&#xff1a; 1、进入微信小程序的后台配置。链接&#xff1a;微信公众平台。&#xff08;…

如何生成微信小程序二维码,小程序内页二维码

你自己得有个微信公众号&#xff0c;只需要知道小程序的名字就可以了 生成小程序二维码 第一步编辑素材 第二步搜索小程序名字&#xff0c;然后回车&#xff0c;下一步 第三步选小程序码 小程序内页二维码 第一步编辑素材 第二步搜索小程序名字&#xff0c;然后回车&…

OpenShift 4 - 在单节点的 OpenShift 上用 NFS Operator 实现以 RWX 访问存储

《OpenShift / RHEL / DevSecOps 汇总目录》 文本已在 OpenShift Local 4.12 环境中进行验证。 文章目录 OpenShift 支持的存储访问模式用 NFS Provisioner Operator 实现 RWX 访问存储安装 NFS Operator解决安装 Operator 过程无法访问谷歌 gcr.io 上的容器镜像配置 NFSProvis…

Linux文件的rwx含义,文件(目录)rwx权限的意义

我们知道不同的角色针对同一个文件(目录)可能会有不同的权限&#xff0c;那么rwx权限的意义是什么呢&#xff1f; 对于文件 文件是包含实际数据的地方&#xff0c;包括一般文本文件、数据库内容文件、二进制可执行文件等。对于文件来说&#xff0c;rwx权限的意义为&#xff1a;…

Linux文件的rwx含义,Linux文件权限rwx简单了解

Ⅰ 了解Linux下的文件权限 如上图所示,ll命令详细展示当前目录下的文件或者子目录信息 红框标注的即为此文件或者目录的权限 【第一行文件10.c的权限以-开头,用来说明这是一个文件;第四行code目录的权限以字母d开头,用来标注code是目录】 关于文件权限,我们要先了解有那些…

chmod,rwx Linux文件属性笔记221107

Linux的文件属性包含文件类型和文件权限 文件类型 -表示文件d表示文件夹l表示软链接 文件权限 r 读权限w 写权限x 执行权限 文件所属 u代表所属用户g代表所属组o代表其它用户 chmod 命令可以修改用户权限 可以通过 r w x 字母修改也可以用 3位0到7 的数字修改 chmod 用 …

关于Linux文件权限rwx的通俗解释

在Linux中&#xff0c;每个文件都有它所对应的权限 我们可以通过在终端输入ls -ahl的方式来查看 这是一个文件列表&#xff0c;每一行都对应一个文件的详细信息 第一个字符&#xff0c;对应的是类型 &#xff08;1&#xff09;如果是d&#xff0c;那么对应的是directory&…

linux中文件权限为drwxr,linux drwxr-xr-x 什么意思 ?

第一位表示文件类型。d是目录文件&#xff0c;l是链接文件&#xff0c;-是普通文件&#xff0c;p是管道 第2-4位表示这个文件的属主拥有的权限&#xff0c;r是读&#xff0c;w是写&#xff0c;x是执行。 第5-7位表示和这个文件属主所在同一个组的用户所具有的权限。 第8-10位表…

Linux_rwx权限

L i n u x _ r w x 权限 \color{blue}{\huge{Linux\_rwx权限}} Linux_rwx权限 Ⅰ.概述 ①. 第 0 0 0代表文件类型( d 、 l 、 c 、 b 、 a 、 − d、l、c、b、a、- d、l、c、b、a、−) l l l&#xff1a;代表连接(快捷方式) d d d&#xff1a;代表目录 c c c&#xff1a;代…

Linux的文件权限说明(rwx)

一、权限说明 在Linux中r是可读权限&#xff0c;w是可写权限&#xff0c;x是可执行权限。4表示可读权限r&#xff0c;2表示可写权限w&#xff0c;1表示可执行权限x&#xff0c;然后将其相加。 注&#xff1a;R的值等于4 W的值等于2 X的值等于1 完全权限&#xff1a;4217 读写权…

drwxrwx--x代表什么

DDMS视图的File Explorer和Android文件管理器里面可以看到这一串字母. 代表的是文件访问权限. 第一位: -表示这是一个文件 d表示这是一个文件夹 l表示这是一个链接 后9位分成三组, 都是rwx, 也就是: r读 w写 x执行 三个组分别是: 所有者 用户组 其他 看下这张图就能明白…

linux中的文件权限类、rwx 作用文件和目录的不同解释

1.6 文件权限类 1.6.1 文件属性 Linux系统是一种典型的多用户系统&#xff0c;不同的用户处于不同的地位&#xff0c;拥有不同的权限。为了保护系统的安全性&#xff0c;Linux系统对不同的用户访问同一文件&#xff08;包括目录文件&#xff09;的权限做 了不同的规定。在Lin…

Linux文件信息中的rwx表示什么?Linux权限理解

目录 文件访问者的分类 Q&#xff1a;为什么要有所属组这个概念&#xff1f; 文件的权限属性分类 文件的权限属性的设置 1.chmod&#xff08;change mode&#xff09; 2.chgrp&#xff08;change group&#xff09; 3.chown&#xff08;change owner&#xff09; 文件权…

rwx权限介绍

一、rwx权限的基本介绍 0-9位说明&#xff1a;0位确定文件类型&#xff08;d&#xff0c;-&#xff0c;l,c,b&#xff09; d是目录&#xff0c;相当于Windows中的文件夹。 -是普通文件 l是链接&#xff0c;相当于Windows中的快捷方式。 c是字符设备文件&#xff0c;鼠标…