目录
一、实现原理
二、实现代码
三、结语
首页 微信小程序 小程序开发 手把手教你在微信小程序中使用canvas+Painter插件制作二维码

手把手教你在微信小程序中使用canvas+Painter插件制作二维码

Nov 04, 2021 am 10:47 AM
二维码 小程序 微信

本篇文章给大家介绍一下在微信小程序中使用canvas+Painter插件制作二维码的方法,希望对大家有所帮助!

手把手教你在微信小程序中使用canvas+Painter插件制作二维码

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

一、实现原理

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

Painter的Github地址:https://github.com/Kujiale-Mobile/Painter

用你的方法,把这个框架下载下来,里面会有示范代码,我们只需要把其中的核心代码拿出来就行。

对于框架的使用介绍,大家可以前往github浏览,我这就直接上手了。【相关学习推荐:小程序开发教程

二、实现代码

前期准备

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:&#39;&#39;}}" mode="widthFix"></image>
  <button type="primary" style="margin-top: 105rpx;" bindtap="makeQRCodeTap">生成二维码</button>
</view>

<!-- canvas隐藏 -->
<painter customStyle=&#39;position: absolute; left: -9999rpx;&#39; 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() {}
})

实现效果

在这里插入图片描述

三、结语

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

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

本文转载自:https://blog.csdn.net/weixin_44702572/article/details/120443998

作者:super--Yang

更多编程相关知识,请访问:编程入门!!

以上是手把手教你在微信小程序中使用canvas+Painter插件制作二维码的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

Rimworld Odyssey温度指南和Gravtech
1 个月前 By Jack chen
Rimworld Odyssey如何钓鱼
1 个月前 By Jack chen
我可以有两个支付帐户吗?
1 个月前 By 下次还敢
初学者的Rimworld指南:奥德赛
1 个月前 By Jack chen
PHP变量范围解释了
3 周前 By 百草

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Laravel 教程
1603
29
PHP教程
1506
276
拷贝漫画(官网入口)_拷贝漫画(nba)正版在线阅读入口 拷贝漫画(官网入口)_拷贝漫画(nba)正版在线阅读入口 Jun 05, 2025 pm 04:12 PM

拷贝漫画无疑是一个不容错过的宝藏。在这里,你可以找到各种风格的篮球漫画,从热血励志的竞技故事,到轻松幽默的日常喜剧,应有尽有。无论是想重温经典,还是想发掘新作,拷贝漫画都能满足你的需求。通过拷贝漫画提供的正版在线阅读入口,你将告别盗版资源的困扰,享受高清流畅的阅读体验,更能支持你喜爱的漫画作者,为正版漫画的发展贡献一份力量。

AI写作软件排行榜单前十名推荐 AI写作软件哪些免费 AI写作软件排行榜单前十名推荐 AI写作软件哪些免费 Jun 04, 2025 pm 03:27 PM

结合 2025 年最新行业动态与多维度评测数据,以下为综合排名前十的 AI 写作软件推荐,涵盖通用创作、学术研究、商业营销等主流场景,同时兼顾中文优化与本地化服务:

奈斯漫画官方页面免费漫画在线看 奈斯漫画登录页面免费入口网站 奈斯漫画官方页面免费漫画在线看 奈斯漫画登录页面免费入口网站 Jun 12, 2025 pm 08:18 PM

奈斯漫画,一个致力于为漫画爱好者打造的沉浸式阅读体验平台,汇聚了海量国内外优质漫画资源。它不仅仅是一个漫画阅读平台,更是一个连接漫画家与读者、分享漫画文化的社区。通过简洁直观的界面设计和强大的搜索功能,奈斯漫画让你能够轻松找到心仪的作品,享受流畅舒适的阅读体验。告别漫长的等待和繁琐的操作,即刻进入奈斯漫画的世界,开启你的漫画之旅吧!

蛙漫 网址在线看入口 漫蛙漫画(网页入口)在线观看 蛙漫 网址在线看入口 漫蛙漫画(网页入口)在线观看 Jun 12, 2025 pm 08:06 PM

蛙漫漫画,凭借其丰富多元的漫画资源和便捷流畅的在线阅读体验,已成为众多漫画爱好者的首选。它就像一个充满活力的池塘,源源不断地涌现出新鲜有趣的故事,等待着你去发现和探索。蛙漫漫画涵盖了各种题材,从热血冒险到甜蜜恋爱,从奇幻科幻到悬疑推理,无论你喜欢哪种类型,都能在这里找到心仪的作品。其简洁直观的界面设计,更让你能够轻松上手,快速找到想看的漫画,沉浸在精彩纷呈的漫画世界中。

包子漫画(入口)_包子漫画(新入口)2025 包子漫画(入口)_包子漫画(新入口)2025 Jun 05, 2025 pm 04:18 PM

在这里,您可以尽情畅游于浩瀚的漫画海洋,探索各种题材和风格的作品,从热血激昂的少年漫,到细腻动人的少女漫,从悬疑烧脑的推理漫,到轻松搞笑的日常漫,应有尽有,总有一款能够触动您的心弦。我们不仅拥有海量的正版漫画资源,还不断引进和更新最新的作品,确保您能够第一时间阅读到您喜爱的漫画。

b安最新注册地址_怎么注册b安交易所 b安最新注册地址_怎么注册b安交易所 May 26, 2025 pm 07:12 PM

2025b安最新官网入口地址:https://www.marketwebb.co/zh-CN/join?ref=507720986&amp;type=wenzi;币安(Binance)交易所是一家全球性的加密货币交易所,服务包括北美、欧洲、台湾、中东、香港、马来西亚在内的180个国家地区,提供超过600种加密货币,在全球拥有2.7亿注册用户。

我可以同时在两部手机上使用微信吗? 我可以同时在两部手机上使用微信吗? Jul 11, 2025 am 03:28 AM

是的,但有限制。①你可以同时在iPhone和安卓手机登录同一账号,但最新设备登录会使最早会话下线;②可在手机与电脑桌面端同时登录,但功能不同步;③使用第三方工具或双应用功能虽能实现两手机登录,但非官方支持且可能违规;④替代方案包括用网页版/桌面版搭配主手机,或通过云备份、文件工具转移聊天记录,部分安卓机还可利用“双应用”运行两个账号实例。

安卓手机如何下载火币 火必下载教程(手把手教程) 安卓手机如何下载火币 火必下载教程(手把手教程) Jun 12, 2025 pm 10:12 PM

安卓手机用户可通过以下步骤下载并安装火币/火必App:1.确保网络稳定、存储空间充足;2.通过火币/火必官方网站下载App,使用浏览器访问官网并点击下载链接或扫描二维码,或通过第三方应用商店如应用宝、华为应用市场搜索下载,也可通过朋友分享获取安装包;3.找到下载的.apk文件,开启“未知来源应用”安装权限,按提示完成安装等等。

See all articles