微信小程序 canvas 生成圖片保存本地 并分享至朋友圈

上代碼

? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? 第一步 頁(yè)面引入? canvas? ? 添加 ID

? ? ?css

核心部分 js? ?

canvasView:?function?(object)?{

???//?console.log(object)

????let?_seif?=?this;

????wx.getSystemInfo({

??????success:?function?(res)?{

????????var?v?=?750?/?res.windowWidth;//設(shè)計(jì)稿尺寸除以??當(dāng)前手機(jī)屏幕寬度

????????function?shiftSize(w)?{

??????????return?w?/?v;

????????};

????????//?畫(huà)圖適配

????????const?ctx?=?wx.createCanvasContext('Canvas',?_seif);


????????//內(nèi)容部分

?????????ctx.save();

?????????ctx.drawImage('../../images/bj.png',?0,?0,?500,3000);?//繪制圖片

????????/****

?????????*?

?????????*?

?????????*?頭像

?????????*?

????????*/

????????ctx.save();

????????ctx.beginPath()?//開(kāi)始創(chuàng)建一個(gè)路徑

????????ctx.arc(shiftSize(250),?50,?30,?0,?2?*?Math.PI);?//畫(huà)一個(gè)圓形裁剪區(qū)域

????????ctx.setStrokeStyle('#ef5756');

????????ctx.stroke('#ef5756');

????????ctx.clip();//裁剪?

????????ctx.drawImage(object.avatarUrl,?shiftSize(190),?20,?60,?60);?//繪制圖片

????????ctx.restore();?//恢復(fù)之前保存的繪圖上下文

????????//姓名

????????ctx.save();

????????ctx.setFillStyle("#ffffff");

????????ctx.setFontSize(12);

????????ctx.setTextAlign('center');

????????ctx.fillText(object.nickName,?shiftSize(250),?100);

????????ctx.save();

????????ctx.setFillStyle("#ffffff");

????????ctx.setFontSize(10)

????????ctx.fillText('分享想買(mǎi)清單',?shiftSize(250),?116);

????????//內(nèi)容部分

????????ctx.save();

????????ctx.setFillStyle('#fff');

????????ctx.fillRect(shiftSize(10),?130,?shiftSize(480),?object.goodsVos.length?*?28.5?+?object.goodsVos.length);

????????//主播

????????ctx.save();

????????ctx.setFillStyle("#333");

????????ctx.setFontSize(10)

????????ctx.setTextAlign('left');

????????ctx.fillText(object.title,?10,?146);

????????ctx.save();

????????ctx.setFillStyle("#a4a4a4");

????????ctx.setFontSize(10);

????????console.log(object)


????????ctx.fillText(object.types=='00'???'主播口述'?:object.types=='01'???'官方正式'?:?'',?10,?164);

????????ctx.setFillStyle("#a4a4a4");

????????ctx.setFontSize(10);

????????ctx.fillText('更新時(shí)間'?+?object.syncTime?+?''?+?object.times,?shiftSize(250),?164);

????????//商品列表

????????let?index?=?28;

????????ctx.save();

????????for?(let?i?=?0;?i?<?object.goodsVos.length;?i++)?{

??????????ctx.save();

??????????ctx.setFillStyle("#333");

??????????ctx.setFontSize(10)

??????????ctx.fillText(i+1+'莲镣、',?shiftSize(16)?,?186?+?(i?*?index));

??????????ctx.save();

??????????ctx.setFillStyle("#333");

??????????ctx.setFontSize(10);

??????????if(object.goodsVos[i].name.length>17){

????????????ctx.fillText(object.goodsVos[i].name.substring(0,17)+'...',?shiftSize(50),?186?+?(i?*?index));

??????????}else{

????????????ctx.fillText(object.goodsVos[i].name.substring(0,17),?shiftSize(50),?186?+?(i?*?index));

??????????}


??????????ctx.stroke();

??????????//線(xiàn)??

??????????ctx.save();

??????????ctx.moveTo(shiftSize(10),?194?+?(i?*?index));

??????????ctx.lineTo(shiftSize(488),?194?+?(i?*?index));

??????????ctx.setLineWidth(1);

??????????ctx.setStrokeStyle('#f4f4f4');

??????????ctx.stroke();

??????????//想買(mǎi)?按鈕

??????????if?(object.goodsVos[i].isFollow?==?"E")?{

????????????ctx.save();

????????????ctx.drawImage('../../images/icon/love.png',?shiftSize(410),?176?+?(i?*?index),?14,?14);?//繪制圖片

????????????ctx.setFillStyle("#fa475e");

????????????ctx.setFontSize(10);

????????????ctx.fillText('想買(mǎi)',?shiftSize(444),?186?+?(i?*?index));

??????????}

????????}

????????//?二維碼

????????ctx.save();

????????//?ctx.beginPath()?//開(kāi)始創(chuàng)建一個(gè)路徑

????????//?ctx.arc(shiftSize(264),?(_seif.data.view.goodsVos.length?*?31.52)?+?_seif.data.view.goodsVos.length,?50,?0,?2?*?Math.PI)?//畫(huà)一個(gè)圓形裁剪區(qū)域

????????//?ctx.setStrokeStyle('#000')

????????//?ctx.stroke();

????????//?ctx.clip();//裁剪

????????ctx.drawImage('../../images/code.png',?shiftSize(160),?(object.goodsVos.length?*?30)?+140,?100,?100);?//繪制圖片

????????ctx.restore();?//恢復(fù)之前保存的繪圖上下文'

????????ctx.save();

????????ctx.setFillStyle("#ffffff")

????????ctx.fillText('長(zhǎng)按圖片識(shí)別小程序碼',?shiftSize(160),?(object.goodsVos.length?*?30)?+?260)

????????ctx.draw(true,?function?()?{

??????????setTimeout(()?=>?{

????????????wx.canvasToTempFilePath({?//寫(xiě)在?draw的回調(diào)里面才能生成圖片

??????????????canvasId:?'Canvas',

??????????????success:?function?(res)?{

????????????????_seif.setData({

??????????????????imgs:?res.tempFilePath

????????????????});

???????????????}

????????????})

??????????},?1000)?

????????})

????????//?畫(huà)圖適配完

??????}

????});

??},

注意? object的數(shù)據(jù) 格式? ?可根據(jù)需求更改

最后一步? 保存到相冊(cè)

先把微信頭像 轉(zhuǎn)化為臨時(shí)路徑??


點(diǎn)擊保存到相冊(cè)


給我點(diǎn)贊賞吧? ?沒(méi)飯吃了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末弱睦,一起剝皮案震驚了整個(gè)濱河市锣枝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異卖怜,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)阐枣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)马靠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蔼两,你說(shuō)我怎么就攤上這事甩鳄。” “怎么了额划?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵妙啃,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我俊戳,道長(zhǎng)揖赴,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任品抽,我火速辦了婚禮储笑,結(jié)果婚禮上甜熔,老公的妹妹穿的比我還像新娘圆恤。我一直安慰自己,他們只是感情好腔稀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布盆昙。 她就那樣靜靜地躺著泻云,像睡著了一般蔚叨。 火紅的嫁衣襯著肌膚如雪宏娄。 梳的紋絲不亂的頭發(fā)上近弟,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天都伪,我揣著相機(jī)與錄音怎披,去河邊找鬼疲牵。 笑死击吱,一個(gè)胖子當(dāng)著我的面吹牛疏尿,可吹牛的內(nèi)容都是我干的瘟芝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼褥琐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼锌俱!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起敌呈,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤贸宏,失蹤者是張志新(化名)和其女友劉穎造寝,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體吭练,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诫龙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鲫咽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赐稽。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖浑侥,靈堂內(nèi)的尸體忽然破棺而出姊舵,到底是詐尸還是另有隱情,我是刑警寧澤寓落,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布括丁,位于F島的核電站,受9級(jí)特大地震影響伶选,放射性物質(zhì)發(fā)生泄漏史飞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一仰税、第九天 我趴在偏房一處隱蔽的房頂上張望构资。 院中可真熱鬧,春花似錦陨簇、人聲如沸吐绵。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)己单。三九已至,卻和暖如春耙饰,著一層夾襖步出監(jiān)牢的瞬間纹笼,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工苟跪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留廷痘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓件已,卻偏偏與公主長(zhǎng)得像笋额,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拨齐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355