小程序生成海報榴芳,并保存到手機(jī)相冊

小程序生成海報,并保存到手機(jī)相冊

github地址
blog地址

需求

小程序要生成一個海報并保存到手機(jī)相冊,海報有個二維碼跺撼,有文字描述等窟感。用戶識別二維碼進(jìn)入小程序,二維碼內(nèi)有參數(shù)歉井,也就是說這個二維碼是動態(tài)的柿祈,需要服務(wù)端生成返回給小程序端。

需求分析

1.一張背景圖片
2.一張二維碼
3.請求接口哩至,并下載2張圖片
4.將2張圖片繪制到canvas
5.繪制文字
6.保存到手機(jī)相冊

技術(shù)點(diǎn)

1.wx.getImageInfo 下載網(wǎng)絡(luò)圖片躏嚎,并生成臨時路勁
2.promise all 將2張網(wǎng)絡(luò)圖片都下載完成后在進(jìn)行canvas繪制
3.canvas.drawImage繪制canvas圖片
4.wx.canvasToTempFilePathcanvas 生成圖片 生成臨時路徑
5.saveImageToPhotosAlbum將生成的臨時路徑保存到手機(jī)相冊

代碼

html
<button bindtap='create'>生成</button>
<canvas
  canvas-id="canvas"
  class="canvas"
  style="position:absolute;width:{{canvasWidth}};height:{{canvasHeight}};left:{{canvasLeft}};">
</canvas>
js
const ctx = wx.createCanvasContext('shareCanvas')
Page({
  data: {
    canvasWidth : "",
    canvasHeight : "",
    canvasLeft : "",
    canvasTop : ""
  },
  /*
  獲取圖片,一般我們生成海報菩貌,海報上的二維碼都是動態(tài)生成的卢佣,每次生成的二維碼都不一樣,且都是通過后臺返回的圖片地址箭阶。
  包括海報背景也是動態(tài)虚茶,后臺返回會來的戈鲁。所以我們現(xiàn)下載圖片,生成臨時路徑嘹叫。
  使用promise主要是海報可能有多個圖片組成婆殿,必須等圖片全部下載完成再去生成
  */
  getImage: function (url) {
    return new Promise((resolve, reject) => {
      wx.getImageInfo({
        src: url,
        success: function (res) {
          resolve(res)
        },
        fail: function () {
          reject("")
        }
      })
    })
  },
  getImageAll: function (image_src) {
    let that = this;
    var all = [];
    image_src.map(function (item) {
      all.push(that.getImage(item))
    })
    return Promise.all(all)
  },
  //創(chuàng)建
  create: function () {
    let that = this;
    //圖片一把是通過接口請求后臺,返回倆點(diǎn)地址罩扇,或者網(wǎng)絡(luò)圖片
    let bg = 'http://statics.logohhh.com/forum/201610/24/170644l325qooyabhioyaa.jpg';
    let qr = 'http://image.weiued.com/UploadImages/question/20170420/3e384842-6af7-44cb-aeb1-f427731c8271.jpg';
    //圖片區(qū)別下載完成婆芦,生成臨時路徑后,在盡心繪制
    this.getImageAll([bg, qr]).then((res) => {
      let bg = res[0];
      let qr = res[1];
      //設(shè)置canvas width height position-left,  為圖片寬高
      this.setData({
        canvasWidth : bg.width+'px',
        canvasHeight : bg.height+ 'px',
        canvasLeft : `-${bg.width + 100}px`,
      })
      let ctx = wx.createCanvasContext('canvas');
      ctx.drawImage(bg.path, 0, 0, bg.width, bg.height);
      ctx.drawImage(qr.path, bg.width - qr.width - 100, bg.height - qr.height - 150, qr.width * 0.8, qr.height * 0.8)
      ctx.setFontSize(20)
      ctx.setFillStyle('red')
      ctx.fillText('Hello world', bg.width - qr.width - 50, bg.height - qr.height - 190)
      ctx.draw()
      wx.showModal({
        title: '提示',
        content: '圖片繪制完成',
        showCancel:false,
        confirmText : "點(diǎn)擊保存",
        success : function () {
          that.save()
        }
      })
    })
  },
  //保存
  save : function () {
    wx.canvasToTempFilePath({//canvas 生成圖片 生成臨時路徑
      canvasId: 'canvas',
      success : function (res) {
        console.log(res)
        wx.saveImageToPhotosAlbum({ //下載圖片
          filePath : res.tempFilePath,
          success : function () {
            wx.showToast({
              title : "保存成功",
              icon: "success",
            })
          }
        })
      }
    })
  }
})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末喂饥,一起剝皮案震驚了整個濱河市寞缝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌仰泻,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滩届,死亡現(xiàn)場離奇詭異集侯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)帜消,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門棠枉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人泡挺,你說我怎么就攤上這事辈讶。” “怎么了娄猫?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵贱除,是天一觀的道長。 經(jīng)常有香客問我媳溺,道長月幌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任悬蔽,我火速辦了婚禮扯躺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蝎困。我一直安慰自己录语,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布禾乘。 她就那樣靜靜地躺著澎埠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪盖袭。 梳的紋絲不亂的頭發(fā)上失暂,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天彼宠,我揣著相機(jī)與錄音,去河邊找鬼弟塞。 笑死凭峡,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的决记。 我是一名探鬼主播摧冀,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼系宫!你這毒婦竟也來了索昂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤扩借,失蹤者是張志新(化名)和其女友劉穎椒惨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體潮罪,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡康谆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嫉到。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沃暗。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖何恶,靈堂內(nèi)的尸體忽然破棺而出孽锥,到底是詐尸還是另有隱情,我是刑警寧澤细层,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布惜辑,位于F島的核電站,受9級特大地震影響疫赎,放射性物質(zhì)發(fā)生泄漏韵丑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一虚缎、第九天 我趴在偏房一處隱蔽的房頂上張望撵彻。 院中可真熱鬧,春花似錦实牡、人聲如沸陌僵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碗短。三九已至,卻和暖如春题涨,著一層夾襖步出監(jiān)牢的瞬間偎谁,已是汗流浹背总滩。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留巡雨,地道東北人闰渔。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像铐望,于是被迫代替她去往敵國和親冈涧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

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