微信小程序?qū)崿F(xiàn)分享到朋友圈功能
截止到2017年11月18號(hào),微信小程序官方還尚未開放直接分享到朋友圈的能力,但是勞動(dòng)人民的智慧是偉大的,現(xiàn)在普遍的做法是,生成一張帶有小程序碼的圖片,保存到用戶相冊(cè),用戶自行發(fā)布圖片到朋友圈
我的套路:
- 請(qǐng)求后端API生成小程序碼(生成小程序碼需要access token,后端生成比較方便)
- canvas繪制文字和圖片到畫布
- 當(dāng)用戶點(diǎn)擊分享到朋友圈時(shí),給用戶展示畫布,畫布轉(zhuǎn)成圖片,并將圖片保存到相冊(cè)
onShow: function () { var that = this; //1. 請(qǐng)求后端API生成小程序碼 that.getQr(); //2. canvas繪制文字和圖片 const ctx = wx.createCanvasContext('myCanvas'); var imgPath = '../../../image/intro.png' var bgImgPath = '../../../image/bgImgPath.png'; ctx.drawImage(imgPath, 0, 0, 600, 520); ctx.setFillStyle('white') ctx.fillRect(0, 520, 600, 280); ctx.drawImage(imgPath, 30, 550, 60, 60); ctx.drawImage(bgImgPath, 30, 550, 60, 60); ctx.drawImage(imgPath, 410, 610, 160, 160); ctx.setFontSize(28) ctx.setFillStyle('#6F6F6F') ctx.fillText('妖妖靈', 110, 590) ctx.setFontSize(30) ctx.setFillStyle('#111111') ctx.fillText('寵友們快來圍觀萌寵靚照', 30, 660) ctx.fillText('我在萌爪幼稚園', 30, 700) ctx.setFontSize(24) ctx.fillText('長按掃碼查看詳情', 30, 770) ctx.draw() }, // 3. canvas畫布轉(zhuǎn)成圖片 wx.canvasToTempFilePath({ x: 0, y: 0, width: 600, height: 800, destWidth: 600, destHeight:800, canvasId: 'myCanvas', success: function(res) { console.log(res.tempFilePath); that.setData({ shareImgSrc : res.tempFilePath }) }, fail:function (res) { console.log(res) } }) //4. 當(dāng)用戶點(diǎn)擊分享到朋友圈時(shí),將圖片保存到相冊(cè) wx.saveImageToPhotosAlbum({ filePath:that.data.shareImgSrc, success(res) { wx.showModal({ title: '存圖成功', content: '圖片成功保存到相冊(cè)了,去發(fā)圈噻~', showCancel:false, confirmText:'好噠', confirmColor:'#72B9C3', success: function(res) { if (res.confirm) { console.log('用戶點(diǎn)擊確定'); } that.hideShareImg() } }) } })
canvas繪制單位為px,舉個(gè)例子,屏幕寬375,繪制375的畫布,保存的圖片就是375px,圖片像素度不夠會(huì)糊掉,所以我改進(jìn)了一下套路:
1.請(qǐng)求后端API生成小程序碼(生成小程序碼需要access token,后端生成比較方便)
2.canvas繪制文字和圖片到畫布
繪制2倍屏幕寬度的canvas畫布,canvas畫布必須是可見狀態(tài)下,才可以被轉(zhuǎn)成圖片,可是他辣么大辣么丑肯定不能給用戶看見,那就給他定位定個(gè)巨大的數(shù)字超出屏幕就好了
3.畫布轉(zhuǎn)成圖片
4.當(dāng)用戶點(diǎn)擊分享到朋友圈時(shí),給用戶展示圖片,并將圖片保存到相冊(cè)
為大家推薦現(xiàn)在關(guān)注度比較高的微信小程序教程一篇:《微信小程序開發(fā)教程》小編為大家精心整理的,希望喜歡。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript 數(shù)組運(yùn)用實(shí)現(xiàn)代碼
復(fù)習(xí)一下JS中數(shù)組的運(yùn)用。學(xué)習(xí)js數(shù)組的朋友可以參考下。2010-04-04javascript獲取url上某個(gè)參數(shù)的方法
獲取url上的某個(gè)參數(shù)的方法有很多,在本文為大家介紹下使用javascript是如何實(shí)現(xiàn)的,感興趣的朋友不要錯(cuò)過2013-11-11JS實(shí)現(xiàn)移動(dòng)端可折疊導(dǎo)航菜單(現(xiàn)代都市風(fēng))
這篇文章主要介紹了JS如何實(shí)現(xiàn)移動(dòng)端可折疊導(dǎo)航菜單,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07JS的執(zhí)行機(jī)制(EventLoop、宏任務(wù)和微任務(wù))
這篇文章主要介紹了JS的執(zhí)行機(jī)制(EventLoop、宏任務(wù)和微任務(wù)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2023-01-01Bootstrap導(dǎo)航菜單點(diǎn)擊后無法自動(dòng)添加active的處理方法
今天小編就為大家分享一篇Bootstrap導(dǎo)航菜單點(diǎn)擊后無法自動(dòng)添加active的處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08關(guān)于layui flow loading占位圖的實(shí)現(xiàn)方法
今天小編就為大家分享一篇關(guān)于layui flow loading占位圖的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09JS實(shí)現(xiàn)生成會(huì)變大變小的圓環(huán)實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)生成會(huì)變大變小的圓環(huán),涉及javascript數(shù)學(xué)運(yùn)算及頁面樣式動(dòng)態(tài)操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08JS獲取IE版本號(hào)與HTML設(shè)置IE文檔模式的方法
下面小編就為大家?guī)硪黄狫S獲取IE版本號(hào)與HTML設(shè)置IE文檔模式的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10