国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

微信小程序?qū)崿F(xiàn)的canvas合成圖片功能示例

2019-11-19 11:39:22
字體:
供稿:網(wǎng)友

本文實例講述了微信小程序?qū)崿F(xiàn)的canvas合成圖片功能。分享給大家供大家參考,具體如下:

先要獲取圖片的信息  然后將需要合成的內(nèi)容用canvas繪制出來,得到一個合成好的畫布,接下來用 wx.canvasToTempFilePath 把當(dāng)前畫布指定區(qū)域的內(nèi)容導(dǎo)出生成指定大小的圖片,并返回文件路徑。這個時候的路徑 是微信的臨時路徑,瀏覽器是訪問不了的,因此需要請求服務(wù)器  用 wx.uploadFile 將本地資源上傳到開發(fā)者服務(wù)器。

在頁面的wxml中加入canvas組件如下:

<view class="canvasBox"> <canvas canvas-id="shareCanvas" style="width:375px;height:300px"></canvas></view>

在js中

picture: function () { //生成圖片   let that = this;   let p1 = new Promise(function (resolve, reject) {    wx.getImageInfo({     src: 圖片路徑,     success(res) {      resolve(res);     }    })   }).then(res => {    const ctx = wx.createCanvasContext('shareCanvas');    ctx.drawImage(res.path, 0, 0, 375, 300);  //繪制背景圖    //ctx.setTextAlign('center')  // 文字居中    ctx.setFillStyle('#000000') // 文字顏色:黑色    ctx.setFontSize(20)     // 文字字號:22px    ctx.fillText("文本內(nèi)容", 20, 70) //開始繪制文本的 x/y 坐標(biāo)位置(相對于畫布)     ctx.stroke();//stroke() 方法會實際地繪制出通過 moveTo() 和 lineTo() 方法定義的路徑。默認顏色是黑色    ctx.draw(false, that.drawPicture());//draw()的回調(diào)函數(shù)     console.log(res.path);   })  },  drawPicture: function () { //生成圖片    var that = this;   setTimeout(function(){    wx.canvasToTempFilePath({ //把當(dāng)前畫布指定區(qū)域的內(nèi)容導(dǎo)出生成指定大小的圖片,并返回文件路徑     x: 0,     y: 0,     width: 375,     height: 300,     destWidth: 750, //輸出的圖片的寬度(寫成width的兩倍,生成的圖片則更清晰)     destHeight: 600,     canvasId: 'shareCanvas',     success: function (res) {      console.log(res);      that.draw_uploadFile(res);     },    })   },300)  },  draw_uploadFile: function (r) { //wx.uploadFile 將本地資源上傳到開發(fā)者服務(wù)器   let that = this;   wx.uploadFile({    url: 圖片上傳接口, //線上接口    filePath: r.tempFilePath,    name: 'imgFile',    success: function (res) {     console.log(res);     if(res.statusCode==200){      res.data = JSON.parse(res.data);      let imgsrc = res.data.data.src;      that.setData({       imgPath: imgsrc      });     }else{      console.log('失敗')     }    },   })  },

注意:若是將此方法寫成自定義組件,則 wx.createCanvasContextwx.canvasToTempFilePath 都需要多傳一個this,

因在自定義組件下,當(dāng)前組件實例的this,用以操作組件內(nèi) <canvas/> 組件。

至于分享的話 ,拿到服務(wù)器返回的圖片路徑之后 就可以用來寫分享的圖片路徑了

希望本文所述對大家微信小程序開發(fā)有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 徐水县| 尼玛县| 仁怀市| 大余县| 文水县| 谢通门县| 霍林郭勒市| 平果县| 聊城市| 商水县| 思茅市| 祁东县| 新乡县| 永春县| 陇西县| 上高县| 凌云县| 海林市| 乌兰浩特市| 襄垣县| 舟山市| 达州市| 漳浦县| 内江市| 安西县| 会泽县| 辽阳市| 武城县| 多伦县| 渝北区| 洞口县| 城步| 麻江县| 德令哈市| 修水县| 岳阳县| 五莲县| 镇康县| 迁安市| 徐水县| 庆云县|