小程序如何生成海報(bào)圖片

這一章節(jié)呢 就講下如何生成朋友圈海報(bào)混巧。對(duì)于這類的需求枪向,最近是賊多。因?yàn)樾〕绦虮緛?lái)就是即用即走的咧党,如何能高效快速的拉新秘蛔,以及留住用戶呢?emmmm凿傅。拉新嘛當(dāng)然得往票圈看齊缠犀,留存就得看你的產(chǎn)品里是否有吸引人的地方。

如何高效的讓其他用戶知道你的小程序產(chǎn)品聪舒,如何推廣你的小程序辨液?首先放幾張圖:


image.png

眾所周知呢,小程序是不能分享到票圈的箱残,所以我們就有了生成海報(bào)的概念滔迈,那么如何去操作生成海報(bào)呢止吁?

使用canvas畫圖

小程序提供了幾個(gè)相關(guān)的畫圖api 點(diǎn)這里
第一步操作:

首先我們需要在頁(yè)面上創(chuàng)建一個(gè)canvas,然后因?yàn)閏anvas 是系統(tǒng)組件它的層級(jí)最高燎悍,所以會(huì)導(dǎo)致一直顯示在頁(yè)面上敬惦,如果你需要查看效果圖,那么可以暫時(shí)不理谈山,最后實(shí)現(xiàn)的時(shí)候我們需要給他一個(gè)樣式`position: absolute; top: -10000rpx;`俄删。讓它定位到頁(yè)面可視區(qū)域之外,不能讓用戶查看到它奏路。
<canvas canvas-id="mycanvas" />

第二步操作:

js里需要把頁(yè)面背景圖畴椰、小程序碼圖 以及用戶頭像等圖片 使用
wx.getImageInfo({
   src: ‘xxx.png‘,
   success: (res) => {  },
   fail: (err)=>{ 
})
把cdn地址的圖片 轉(zhuǎn)成微信本地圖片,不然生成不了海報(bào)鸽粉。這個(gè)API有較多的轉(zhuǎn)換失敗的情況斜脂,現(xiàn)在我們小程序后臺(tái)報(bào)錯(cuò)基本都是該問題。所以需要在fail回調(diào)里做重試操作触机。

第三步操作:

畫圖.這里是大多數(shù)開發(fā)者比較煩的地方帚戳,頁(yè)面內(nèi)的所有元素需要組裝到一起。所以需要布局樣式儡首。
然后canvas的樣式是使用坐標(biāo)軸來(lái)玩的片任,所以需要根據(jù)x和y軸來(lái)調(diào)整樣式。且位置單位為px椒舵。接下來(lái)貼源碼吧

//將小程序碼繪制到固定位置
  setQrcode(context) {
    let path = this.data.qtsheXcxCode //小程序碼
    context.drawImage(path, 75, 450, 75, 75)
  },
  //將昵稱繪制到canvas的固定位置
  setName(context) {
    if (this.data.userName.length >= 8) {
      var title = this.data.userName.substring(0, 7) + '...'
    } else {
      var title = this.data.userName
    }
    context.setFontSize(14)
    context.fillText(title, 98, 330)
  },
  //繪制用戶頭像
  setAvatarUrl(context) {
    let cx = 30 + 25
    let cy = 320 + 25
    context.arc(cx, cy, 25, 0, 2 * Math.PI)
    context.clip()
    let path = this.data.userHeadUrl
    context.drawImage(path, 30, 320, 52, 52)
  },
  //將canvas轉(zhuǎn)換為圖片保存到本地蚂踊,然后將圖片路徑傳給image圖片的src
  createNewImg() {
    let context = wx.createCanvasContext('mycanvas')
    let path = this.data.qtsheBackground
    let that = this
    context.drawImage(path, 0, 0, 375, 667) //以iPhone 6尺寸大小為標(biāo)準(zhǔn)繪制圖片
    that.setQrcode(context)
    that.setName(context)
    that.setAvatarUrl(context)
    //繪制圖片
    context.draw()
    context.save()
    //將生成好的圖片保存到本地,需要延遲一會(huì)笔宿,繪制期間耗時(shí)
    setTimeout(() => {
      wx.canvasToTempFilePath({
        canvasId: 'mycanvas',
        success: function(res) {
          wx.hideLoading()
          that.setData({
            shareImagePath: res.tempFilePath
          })
        },
        fail: function(res) {
          console.log(res.errMsg)
        }
      }, this)
    }, 2000)
  },
注意一點(diǎn)的是保存圖片時(shí)需要延遲犁钟,這是老版的寫法,沒有啥問題泼橘,新版寫法可以通過draw回調(diào)畫圖成功后調(diào)用保存圖片的api wx.canvasToTempFilePath涝动。這個(gè)時(shí)候就不需要寫延時(shí)保存圖片。
  savePhoto() {
    var that = this
    wx.showLoading({
      title: '正在保存...',
      mask: true
    })
    setTimeout(() => {
      wx.saveImageToPhotosAlbum({
        filePath: that.data.shareImagePath,
        success(res) {
          wx.showToast({
            title: '保存成功',
            icon: 'none'
          })
          setTimeout(() => {
            wx.hideLoading()
            that.setData({
              isPhotoModel: false,
              isCanvas: false
            })
          }, 300)
        },
        fail() {
          wx.showToast({
            title: '保存失敗炬灭,請(qǐng)刷新頁(yè)面重試',
            icon: 'none'
          })
          setTimeout(() => {
            wx.hideLoading()
            that.setData({
              isPhotoModel: false,
              isCanvas: false
            })
          }, 300)
        }
      })
    }, 2500)
  }

然后再說一個(gè)canvas里繪制圓角頭像的方法:

ctx: context, img:圖片路徑醋粟,x:圓的中心的x坐標(biāo),y: 圓的中心的y坐標(biāo)重归,r:圓的半徑
circleImg(ctx, img, x, y, r) {
    ctx.save();
    var d =2 * r;
    var cx = x + r;
    var cy = y + r;
    ctx.arc(cx, cy, r, 0, 2 * Math.PI);
    ctx.clip();
    ctx.drawImage(img, x, y, d, d);
    ctx.restore();
  }
image.png

至此米愿,我們的海報(bào)就畫好了,并且保存圖片的步驟也完成了鼻吮。大家可以去試試育苟,充分利用好海報(bào)的便利,遵守微信規(guī)范椎木,別誘導(dǎo)分享被封啦违柏。

結(jié)語(yǔ):

第三章就說到這里了博烂,這里介紹了小程序的海報(bào)的生成過程,下一章節(jié)將會(huì)講到小程序的營(yíng)銷組件老虎機(jī)和翻牌組件漱竖,以及其他相關(guān)功能組件具體可以在微信搜一搜 搜索兼職 然后通過服務(wù)直達(dá)區(qū)找到 《青團(tuán)社兼職實(shí)習(xí)》禽篱,有什么問題或意見可聯(lián)系QQ8662054指出。

青團(tuán)社招聘:

招聘崗位:高級(jí)前端開發(fā)工程師P5及以上
坐標(biāo)杭州市余杭區(qū)文一西路1380號(hào)金之源大廈11層

簡(jiǎn)歷投遞到:hr@qtshe.com || haochen@qtshe.com

職位描述:

1馍惹、建設(shè)工具躺率、提煉組件、抽象框架万矾,促進(jìn)前端工程化肥照、服務(wù)化,持續(xù)提升研發(fā)效率勤众,保障線上產(chǎn)品質(zhì)量

2、構(gòu)建H5/PC應(yīng)用基礎(chǔ)設(shè)施鲤脏,主導(dǎo)建設(shè)前端各種發(fā)布/監(jiān)控等平臺(tái)们颜,指導(dǎo)落實(shí)解決方案

3、持續(xù)優(yōu)化前端頁(yè)面性能猎醇,維護(hù)前端代碼規(guī)范窥突,鉆研各種前沿技術(shù)和創(chuàng)新交互,增強(qiáng)用戶體驗(yàn)硫嘶、開拓前端能力邊界

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末阻问,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子沦疾,更是在濱河造成了極大的恐慌称近,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哮塞,死亡現(xiàn)場(chǎng)離奇詭異刨秆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)忆畅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門衡未,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人家凯,你說我怎么就攤上這事缓醋。” “怎么了绊诲?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵送粱,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我驯镊,道長(zhǎng)葫督,這世上最難降的妖魔是什么竭鞍? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮橄镜,結(jié)果婚禮上偎快,老公的妹妹穿的比我還像新娘。我一直安慰自己洽胶,他們只是感情好晒夹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著姊氓,像睡著了一般丐怯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上翔横,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天读跷,我揣著相機(jī)與錄音,去河邊找鬼禾唁。 笑死效览,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的荡短。 我是一名探鬼主播丐枉,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼掘托!你這毒婦竟也來(lái)了瘦锹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤闪盔,失蹤者是張志新(化名)和其女友劉穎弯院,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泪掀,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抽兆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了族淮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辫红。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖祝辣,靈堂內(nèi)的尸體忽然破棺而出贴妻,到底是詐尸還是另有隱情,我是刑警寧澤蝙斜,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布名惩,位于F島的核電站,受9級(jí)特大地震影響孕荠,放射性物質(zhì)發(fā)生泄漏娩鹉。R本人自食惡果不足惜攻谁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望弯予。 院中可真熱鬧刺洒,春花似錦杀狡、人聲如沸伙菜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)呼寸。三九已至艳汽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間对雪,已是汗流浹背河狐。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瑟捣,地道東北人甚牲。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蝶柿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子非驮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 上一章節(jié)講到了如何新建一個(gè)小程序交汤,以及頁(yè)面內(nèi)需要使用到的一些基本方法。這一章節(jié)就講【小程序的自定義組件開發(fā)】以及【...
    人類進(jìn)化又沒帶我閱讀 1,536評(píng)論 0 3
  • 機(jī)會(huì)是留給有準(zhǔn)備的人的......... 所以你要繼續(xù)努力
    趙影_87d6閱讀 143評(píng)論 0 0
  • 柬埔寨作為一個(gè)人文旅游目的地劫笙,走馬觀花確實(shí)沒有意思芙扎。但是,當(dāng)你真正了解其中的歷史填大、宗教戒洼、文化,那么允华,每一眼所見圈浇,帶...
    駱幗婷閱讀 414評(píng)論 0 3