搜尋
首頁微信小程式小程式開發手把手教你在微信小程式中使用canvas+Painter插件製作二維碼

這篇文章跟大家介紹一下在微信小程式中使用canvas Painter外掛程式製作二維碼的方法,希望對大家有幫助!

手把手教你在微信小程式中使用canvas+Painter插件製作二維碼

在日常的小程式專案中,會經常遇到需要動態繪製二維碼的需求。使用場景很多,例如繪製在海報上,例如製作票務碼、核銷碼等等。
這篇文章是應一位好友的需求而寫的,也希望能夠給有需要的同學一些幫助。

一、實作原理

使用微信小程式的canvas元件進行繪製,但是在該元件用起來並不是很順手,所以使用了第三方的框架:Painter

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

用你的方法,把這個框架下載下來,裡面會有示範程式碼,我們只要要把其中的核心程式碼拿出來就好。

對於框架的使用介紹,大家可以前往github瀏覽,我這就直接上手了。 【相關學習推薦:小程式開發教學

二、實作程式碼

##前期準備

1、新建components資料夾,放置painter核心程式碼

手把手教你在微信小程式中使用canvas+Painter插件製作二維碼

#2、新palette資料夾,放置繪製實作程式碼

手把手教你在微信小程式中使用canvas+Painter插件製作二維碼painter.js程式碼

export default class LastMayday {
  palette(viewList) {
    return (
      viewList
    );
  }
}
3、新繪製的具體屬性資訊資料夾posterViewjs,放置例如繪製的大小、位置等資訊js。

手把手教你在微信小程式中使用canvas+Painter插件製作二維碼

二維碼繪製屬性資訊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
}

實作

##實作頁面目錄結構

手把手教你在微信小程式中使用canvas+Painter插件製作二維碼

wxml程式碼

<view>
  <image></image>
  <button>生成二维码</button>
</view>

<!-- canvas隐藏 -->
<painter></painter>
<!-- 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() {}
})
實現效果

手把手教你在微信小程式中使用canvas+Painter插件製作二維碼三、結語

實際開發中的其他邏輯就不寫了。需要同學們自己去考慮異常狀況處理等問題囉。

以上皆是本人開發過程中的一些經驗總結與領悟,如果有什麼不正確的地方,希望大佬們評論區斧正。

本文轉載自:https://blog.csdn.net/weixin_44702572/article/details/120443998

#作者:super--Yang

更多程式相關知識,請造訪:

程式設計入門
! !

以上是手把手教你在微信小程式中使用canvas+Painter插件製作二維碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:csdn。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),