【移動(dòng)應(yīng)用開發(fā)技術(shù)】微信小程序如何通過保存圖片分享到朋友圈的功能_第1頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】微信小程序如何通過保存圖片分享到朋友圈的功能_第2頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】微信小程序如何通過保存圖片分享到朋友圈的功能_第3頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】微信小程序如何通過保存圖片分享到朋友圈的功能_第4頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】微信小程序如何通過保存圖片分享到朋友圈的功能_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余2頁可下載查看

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

【移動(dòng)應(yīng)用開發(fā)技術(shù)】微信小程序如何通過保存圖片分享到朋友圈的功能

在下給大家分享一下微信小程序如何通過保存圖片分享到朋友圈的功能,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!小程序內(nèi)是不能直接分享到朋友圈的。所以只能通過生成圖片,攜帶小程序二維碼,保存到手機(jī)相冊(cè),讓用戶自己選擇發(fā)到朋友圈。然后可以通過在小程序中識(shí)別二維碼來進(jìn)入小程序的指定頁面。下面在下給大家分享實(shí)現(xiàn)代碼,需要的朋友參考下吧說明首先說明一點(diǎn),小程序內(nèi)是不能直接分享到朋友圈的。所以只能通過生成圖片,攜帶小程序二維碼,保存到手機(jī)相冊(cè),讓用戶自己選擇發(fā)到朋友圈。然后可以通過在小程序中識(shí)別二維碼來進(jìn)入小程序的指定頁面。參考市面上支持分享的應(yīng)用,基本都是這種實(shí)現(xiàn)方式。準(zhǔn)備階段1.通過服務(wù)器獲取小程序碼這里可以參考下微信的官方文檔,給后臺(tái)指定的參數(shù)和路徑等信息,讓后臺(tái)生成指定的小程序碼。然后調(diào)用wx.getImageInfo將后臺(tái)生成的小程序碼保存起來。注意一定要仔細(xì)看下微信的文檔,如果生成小程序碼的路徑正式服務(wù)器不存在,將會(huì)生成失敗。這點(diǎn)也很蛋疼,很不方便調(diào)試。wx.getImageInfo({

src:'https://xxx.jpg',//服務(wù)器返回的帶參數(shù)的小程序碼地址

success:

function

(res)

{

//res.path是網(wǎng)絡(luò)圖片的本地地址

qrCodePath

=

res.path;

},

fail:

function

(res)

{

//失敗回調(diào)

}

});1.通過canvas繪制所需信息準(zhǔn)備好所有的圖片之后就可以通過canvas繪制了,然后再將canvas導(dǎo)出為圖片。關(guān)于繪制這塊,可以參考微信的canvasapi,下面的基本都是查著api的方法走的。其中需要注意的有幾點(diǎn)。1.是不知道繪出來的文字長(zhǎng)度,所以不知道文字到底什么時(shí)候該換行,所以針對(duì)商品標(biāo)題,可能多行的數(shù)據(jù)固定了一行18個(gè)字符。2.是關(guān)于繪制圖片的導(dǎo)出,按照官方api的說法應(yīng)該在draw()完成的回調(diào)中執(zhí)行,但是通過canvasCtx.draw(false,function(res){

});這種方式,一直不回調(diào)完成。不知道哪里出問題了。所以最后只好加了一個(gè)延時(shí)去保存圖片。/**

*

繪制分享的圖片

*

@param

goodsPicPath

商品圖片的本地鏈接

*

@param

qrCodePath

二維碼的本地鏈接

*/

drawSharePic:

function

(goodsPicPath,

qrCodePath)

{

wx.showLoading({

title:

'正在生成圖片...',

mask:

true,

});

//y方向的偏移量,因?yàn)槭菑纳贤吕L制的,所以y一直向下偏移,不斷增大。

let

yOffset

=

20;

const

goodsTitle

=

this.data.orderDetail.paltP1;

let

goodsTitleArray

=

[];

//為了防止標(biāo)題過長(zhǎng),分割字符串,每行18個(gè)

for

(let

i

=

0;

i

<

goodsTitle.length

/

18;

i++)

{

if

(i

>

2)

{

break;

}

goodsTitleArray.push(goodsTitle.substr(i

*

18,

18));

}

const

price

=

this.data.orderDetail.price;

const

marketPrice

=

this.data.orderDetail.marketPrice;

const

title1

=

'您的好友邀請(qǐng)您一起分享精品好貨';

const

title2

=

'立即打開看看吧';

const

codeText

=

'長(zhǎng)按識(shí)別小程序碼查看詳情';

const

imgWidth

=

780;

const

imgHeight

=

1600;

const

canvasCtx

=

wx.createCanvasContext('shareCanvas');

//繪制背景

canvasCtx.setFillStyle('white');

canvasCtx.fillRect(0,

0,

390,

800);

//繪制分享的標(biāo)題文字

canvasCtx.setFontSize(24);

canvasCtx.setFillStyle('#333333');

canvasCtx.setTextAlign('center');

canvasCtx.fillText(title1,

195,

40);

//繪制分享的第二行標(biāo)題文字

canvasCtx.fillText(title2,

195,

70);

//繪制商品圖片

canvasCtx.drawImage(goodPicPath,

0,

90,

390,

390);

//繪制商品標(biāo)題

yOffset

=

490;

goodsTitleArray.forEach(function

(value)

{

canvasCtx.setFontSize(20);

canvasCtx.setFillStyle('#333333');

canvasCtx.setTextAlign('left');

canvasCtx.fillText(value,

20,

yOffset);

yOffset

+=

25;

});

//繪制價(jià)格

yOffset

+=

8;

canvasCtx.setFontSize(20);

canvasCtx.setFillStyle('#f9555c');

canvasCtx.setTextAlign('left');

canvasCtx.fillText('¥',

20,

yOffset);

canvasCtx.setFontSize(30);

canvasCtx.setFillStyle('#f9555c');

canvasCtx.setTextAlign('left');

canvasCtx.fillText(price,

40,

yOffset);

//繪制原價(jià)

const

xOffset

=

(price.length

/

2

+

1)

*

24

+

50;

canvasCtx.setFontSize(20);

canvasCtx.setFillStyle('#999999');

canvasCtx.setTextAlign('left');

canvasCtx.fillText('原價(jià):¥'

+

marketPrice,

xOffset,

yOffset);

//繪制原價(jià)的刪除線

canvasCtx.setLineWidth(1);

canvasCtx.moveTo(xOffset,

yOffset

-

6);

canvasCtx.lineTo(xOffset

+

(3

+

marketPrice.toString().length

/

2)

*

20,

yOffset

-

6);

canvasCtx.setStrokeStyle('#999999');

canvasCtx.stroke();

//繪制最底部文字

canvasCtx.setFontSize(18);

canvasCtx.setFillStyle('#333333');

canvasCtx.setTextAlign('center');

canvasCtx.fillText(codeText,

195,

780);

//繪制二維碼

canvasCtx.drawImage(qrCodePath,

95,

550,

200,

200);

canvasCtx.draw();

//繪制之后加一個(gè)延時(shí)去生成圖片,如果直接生成可能沒有繪制完成,導(dǎo)出圖片會(huì)有問題。

setTimeout(function

()

{

wx.canvasToTempFilePath({

x:

0,

y:

0,

width:

390,

height:

800,

destWidth:

390,

destHeight:

800,

canvasId:

'shareCanvas',

success:

function

(res)

{

that.setData({

shareImage:

res.tempFilePath,

showShar

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論