溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序的canvas生成圖片并保存到本地的方法

發(fā)布時間:2020-06-15 14:19:21 來源:億速云 閱讀:651 作者:鴿子 欄目:web開發(fā)

前言


需求場景:我們知道,微信小程序可以分享給好友或者微信群,不能分享到朋友圈,那分享到朋友圈就需要特殊處理一下,這里我們把小程序和canvas結合起來使用,生成自定義圖片并保存到本地。

代碼


  • wxml文件

<view>
    <button type="default" size="defaultSize" bindtap="exportImg">生成圖片</button>
</view>
<canvas canvas-id="myCanvas"></canvas>
  • js文件

通過canvasAPI繪制

const ctx = wx.createCanvasContext('myCanvas');
//繪制背景圖
ctx.drawImage(res.path, 0, 0, screenWidth, 500);
//繪制背景圖上層的頭像
ctx.save();
ctx.arc(100, 100, 30, 0, 2 * Math.PI);
ctx.clip();
ctx.drawImage(avatarUrl, 50, 50, 110, 110);//根據(jù)微信getUserInfo接口獲取到用戶頭像
ctx.restore();
//繪制文字
ctx.setTextAlign('center')
ctx.setFillStyle('#fff')
ctx.setFontSize(16)
ctx.fillText(userInfo.nickName, 100, 180)//用戶昵稱
ctx.stroke()
ctx.draw()

通過wx.canvasToTempFilePath獲取本地路徑

wx.canvasToTempFilePath({
    x: 0,
    y: 0,
    width: 300,
    height: 500,
    canvasId: 'myCanvas',
    success: function (res) {
        console.log(res.tempFilePath);
    }
})

通過wx.saveImageToPhotosAlbum保存圖片到本地

wx.saveImageToPhotosAlbum({
    filePath: tempFilePath,//canvasToTempFilePath返回的tempFilePath
    success: (res) => {
        console.log(res)
    },
    fail: (err) => {}
})

簡單的效果圖


微信小程序的canvas生成圖片并保存到本地的方法

總結

canvasdrawImage方法只支持本地圖片,不支持網絡圖片,所以頭像和背景圖我都用getImageInfo這個方法轉了一下。

通過userInfo獲取的頭像是正方形的,不是需求中的圓形,這里用到了clip()方法,需要配合save()restore(),因為裁剪之后如果不恢復,接下來的繪制都會在那個小區(qū)域里面。

此次demo沒有使用生成二維碼的api,有興趣的朋友們可以搞一下。此處是鏈接

以上就是微信小程序-canvas生成圖片并保存到本地的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI