付費(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026福建省面向復(fù)旦大學(xué)選調(diào)生選拔工作考試備考題庫附答案
- 2026福建龍巖人民醫(yī)院招聘醫(yī)學(xué)類緊缺急需專業(yè)畢業(yè)生4人參考題庫附答案
- 公共交通運(yùn)營(yíng)服務(wù)收費(fèi)標(biāo)準(zhǔn)制度
- 2026遼寧大連理工大學(xué)機(jī)械工程學(xué)院實(shí)驗(yàn)技術(shù)人員招聘1人參考題庫附答案
- 2026重慶市紅十字會(huì)會(huì)屬事業(yè)單位人員招聘1人參考題庫附答案
- 2026陜西省面向華東師范大學(xué)招錄選調(diào)生參考題庫附答案
- 2026黑龍江佳木斯市樺川縣人民法院招聘聘用制輔警1人參考題庫附答案
- 成都東部新區(qū)2025年面向全國(guó)公開選調(diào)事業(yè)單位工作人員(40人)參考題庫附答案
- 敦煌油田8個(gè)“飛地”社區(qū)面向社會(huì)公開招錄“兩委”換屆后備干部備考題庫附答案
- 浙江國(guó)企招聘-2026年金華蘭溪市市屬國(guó)企(城投集團(tuán))人才引進(jìn)招聘3人考試備考題庫附答案
- 圍手術(shù)期心肌梗塞的護(hù)理
- 超市門口鑰匙管理制度
- 代貼現(xiàn)服務(wù)合同范本
- 2025小學(xué)六年級(jí)英語時(shí)態(tài)綜合練習(xí)卷
- 垃圾清運(yùn)補(bǔ)充合同范本
- 病蟲害防治操作規(guī)程編制
- 九年級(jí)上學(xué)期數(shù)學(xué)壓軸必考題型-反比例函數(shù)(含答案)
- 上海市旅館從業(yè)人員考試及答案解析
- 生日主題宴會(huì)設(shè)計(jì)方案
- 《基坑圍護(hù)結(jié)構(gòu)滲漏檢測(cè)技術(shù)標(biāo)準(zhǔn)》
- 防火防爆電氣安全知識(shí)培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論