微信小程序?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ā)教程》小編為大家精心整理的,希望喜歡。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript實(shí)現(xiàn)文本中間縮略的兩種方案
項(xiàng)目中經(jīng)常會(huì)遇到縮略展示文字的場景,即要求文字在一行不換行展示,超出自動(dòng)展示...,常用的展示效果有兩種,文字中間縮略以及文字末尾縮略,本文將通過代碼示例給大家詳細(xì)的講一下這兩種方案,需要的朋友可以參考下2024-06-06
深入理解JavaScript系列(13) This? Yes,this!
在這篇文章里,我們將討論跟執(zhí)行上下文直接相關(guān)的更多細(xì)節(jié)。討論的主題就是this關(guān)鍵字。實(shí)踐證明,這個(gè)主題很難,在不同執(zhí)行上下文中this的確定經(jīng)常會(huì)發(fā)生問題2012-01-01
JavaScript實(shí)現(xiàn)仿新浪微博大廳和騰訊微博首頁滾動(dòng)特效源碼
最近看到朋友用JavaScript實(shí)現(xiàn)仿新浪微博大廳和未登錄騰訊微博首頁滾動(dòng)效果,朋友使用jquery實(shí)現(xiàn)的,在網(wǎng)上看到有用js制作的也比較好,于是把我的內(nèi)容整理分享給大家,具體詳解請(qǐng)看本文2015-09-09
選擇指定數(shù)量后checkbox不可選(變灰)javascript代碼
選擇指定數(shù)量后checkbox不可選(變灰)javascript代碼2009-06-06
回車直接實(shí)現(xiàn)點(diǎn)擊某按鈕的效果即觸發(fā)單擊事件
這篇文章主要介紹了回車直接實(shí)現(xiàn)點(diǎn)擊某按鈕的效果即觸發(fā)單擊事件,需要的朋友可以參考下2014-02-02
JS鼠標(biāo)滑過圖片時(shí)切換圖片實(shí)現(xiàn)思路
在瀏覽網(wǎng)頁時(shí)會(huì)看到這樣的效果:當(dāng)鼠標(biāo)滑過一張圖片后,這張圖片切換為了另外的一張圖片,下面為大家介紹下具體是如何實(shí)現(xiàn)的,感興趣的朋友不要錯(cuò)過2013-09-09
JavaScript forEach的幾種用法小結(jié)
forEach()是JavaScript中一個(gè)常用的方法,用于遍歷數(shù)組或類數(shù)組對(duì)象中的每個(gè)元素,本文就來介紹一下JavaScript forEach的幾種用法小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11

