微信小程序canvas繪制圓角base64圖片的實(shí)現(xiàn)
接口返回base64格式小程序二維碼,以往的做法是需要再調(diào)一個(gè)接口去拿到j(luò)pg/png格式的圖片。如果沒有這個(gè)接口呢,是不是也可以?然而小程序canvas并不支持直接使用base64繪制,好在小程序的文件系統(tǒng)提供了方法,可以把base64經(jīng)過進(jìn)一步處理轉(zhuǎn)成本地圖片。
獲取base64格式圖片
getXcxQrcode() { wx.request({ url: app.globalData.globalUrl + "/get_wx_code", data: { token: app.globalData.weixin_token, scene: app.globalData.page_key, page: "pages/index/index" }, success: (res) => { if (data.data.success) { this.base64src(data.data) } } }) }
base64格式圖片轉(zhuǎn)換成本地圖片
base64src(base64data) { const filePath = `${wx.env.USER_DATA_PATH}/tmpbase64.png`; const buffer = wx.base64ToArrayBuffer(base64data.buffer); let that = this; fsm.writeFile({ filePath, data: buffer, encoding: 'binary', success() { that.setData({ qrcodeUrl: filePath // 得到http://usr/tmpbase64.png }) }, fail() { reject(new Error('ERROR_BASE64SRC_WRITE')); }, }); },
使用獲得的本地圖片繪制圓角二維碼
var qrW = 150; //繪制的二維碼寬度 var qrH = 150; //繪制的二維碼高度 var qr_x = 540; //繪制的二維碼在畫布上的位置 var qr_y = 960; //繪制的二維碼在畫布上的位置 ctx.save(); ctx.beginPath(); //開始繪制 //先畫個(gè)圓 前兩個(gè)參數(shù)確定了圓心 (x,y) 坐標(biāo) 第三個(gè)參數(shù)是圓的半徑 四參數(shù)是繪圖方向 默認(rèn)是false,即順時(shí)針 ctx.arc(qrW / 2 + qr_x, qrH / 2 + qr_y, qrW / 2, 0, Math.PI * 2, false); ctx.clip(); //畫好了圓 剪切 原始畫布中剪切任意形狀和尺寸。一旦剪切了某個(gè)區(qū)域,則所有之后的繪圖都會(huì)被限制在被剪切的區(qū)域內(nèi) 這也是我們要save上下文的原因 ctx.drawImage(this.data.qrcodeUrl, qr_x, qr_y, qrW, qrH); ctx.draw()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
動(dòng)態(tài)的改變IFrame的高度實(shí)現(xiàn)IFrame自動(dòng)伸展適應(yīng)高度
動(dòng)態(tài)的改變IFrame的高度,實(shí)現(xiàn)IFrame自動(dòng)伸展,父頁面也自動(dòng)神縮原理: 在IFrame子頁面一加載的時(shí)候,調(diào)用父IFrame對(duì)象,改變其高度2012-12-12在線一元二次方程計(jì)算器實(shí)例(方程計(jì)算器在線計(jì)算)
在線一元二次方程式計(jì)算器實(shí)例分享,大家參考使用吧2013-12-12ECMAScript?數(shù)據(jù)類型之Number類型
這篇文章主要介紹了?ECMAScript?數(shù)據(jù)類型之Number類型,Number類型使用IEEE?754格式表示整數(shù)和浮點(diǎn)值,更多相關(guān)內(nèi)容請(qǐng)需要的小伙伴參考下面文章內(nèi)容2022-06-06網(wǎng)頁右下角彈出窗體實(shí)現(xiàn)代碼
右下角彈出窗體的效果在瀏覽網(wǎng)頁的時(shí)候會(huì)遇到,那么它是怎么實(shí)現(xiàn)的呢?本文有個(gè)不錯(cuò)的示例,大家可以參考下2014-06-06