微信小程序繪制二維碼(附微信小程序開發學習手冊)


一、前言

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

二、實現原理

使用微信小程序的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() {}
})

實現效果

在這里插入圖片描述

四、最后結語(學習指南)

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

有任何疑問可以在評論區留下。

最后,微信小程序作為近幾年“微服務”的傑出代表,應用十分廣泛。小程序是一種新的開放能力,開發者可以快速地開發一個小程序。小程序可以在微信內被便捷地獲取和傳播,同時具有出色的使用體驗。

小程序作為未來移動應用開發的大趨勢,具有以下優勢:

1、不用安裝APP,即開即用,用完就關閉,省時省流量,更不會占用手機內存;
2、只需要用戶掃碼即可,不管是流量環境還是wifi環境,都不是問題,最大程度減少了用戶的耐心損耗;
3、程序簡化,只需開發只涉及網頁前端和服務器后端,不需要像APP一樣,考慮兩個手機系統,節省了大量的時間和人力;
4、對於用戶來說,微信小程序UI和操作流程會更統一,這也會降低用戶的使用難度;
5、可跨平台,微信應用號本身是網頁,可以在群里被轉發,可以搭建到公眾號商,傳播起來非常方便;
6、微信有海量用戶,而且粘性很高,在微信里開發產品更容易觸達用戶。

綜上,微信小程序可以說是作為前端、移動端開發人員必備技能,而如今小程序開發人才緊缺,在北上廣深這樣的一線城市,僅是應屆生甚至大專學歷,就可以收獲10k以上的月薪!

不少編程專業的同學都面臨着“畢業=失業”的窘境,像熱門主流的Java開發和Web前端崗位競爭實在太過激烈。而小程序可以說是內卷狂沙中的一片綠洲。

如果你苦於學校並沒有開設小程序的課程,或者沒有一份系統完整的學習資料,請你務必收下今天這篇文章!4504頁《微信小程序零基礎入門開發文檔》助你零基礎入門微信小程序開發!毫不誇張的說,啃完這份筆記,你絕對能達到企業級的開發水准,保你在畢業時能驚艷所有人!

廢話不多說,我們直接開始上硬菜!!
(ps:請務必點贊+收藏文章,把他分享給更多的人!)

這份筆記免費開源分享,有需要的朋友直接【一鍵三連】,然后點擊【此處】進入群共享資源自取,或者直接通過下方代碼塊找我領取。**

// Wechat number(可復制): 
study5233

第一章:起步指南

這一章節是真正的入門篇,從零開始教你搭建、編碼、運行你的第一個微信小程序。

第二章:框架

第三章:組件

第四章:API

這份筆記免費開源分享,有需要的朋友直接【一鍵三連】,然后點擊【此處】進入群共享資源自取,或者直接通過下方代碼塊找我領取。**

// Wechat number(可復制): 
study5233

第五章:服務

第六章:工具

第七章:雲開發

第八章:擴展能力

這份筆記免費開源分享,有需要的朋友直接【一鍵三連】,然后點擊【此處】進入群共享資源自取,或者直接通過下方代碼塊找我領取。**

// Wechat number(可復制): 
study5233

文末

如果這份筆記對你有幫助,請務必點贊+收藏這篇文章,把他分享給更多的小伙伴,一起學習進步!

追夢的路上總是艱難,路漫漫其修遠兮,吾將上下而求索。即便未必能夠如願抵達,未必能夠得償所願,但能進一步是一步,每前進一步總有一步的欣喜,也多少會見到一些新的風景。

我不知道讀者里有多少這樣前路迷茫需要鼓舞的人,希望今天這篇文章能夠給你們一點鼓勵和力量,勇敢地出發,朝着自己夢想的地方前進。你也可以點贊關注我,與我一起前進。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM