微信小程序?qū)崿F(xiàn)從手機選擇圖片繪制到canvas,并保存到手機

微信小程序?qū)崿F(xiàn)從手機相冊選擇圖片述召,繪制到canvas上并保存到手機上

第一步:wxml用canvas標簽朱转,并設(shè)置唯一id

<canvas canvas-id="myCanvas" style="width:600rpx;height:800rpx;"></canvas>

注意:

1.標簽canvas,配合使用的是 canvas-id积暖;
2.要設(shè)置繪制區(qū)域的大小肋拔,可根據(jù)需求或者設(shè)計圖設(shè)置寬和高。

第二步:canvas畫圖呀酸,drawCanvas是一個基礎(chǔ)繪畫凉蜂,在沒從相冊選擇圖片時候進行的展示樣式;別忘了在onload()里面調(diào)用一下這個方法。

// canvas畫圖
  drawCanvas: function() {
    // 先定義一下窿吩,獲取創(chuàng)建 myCanvas是canvas-id名
    const ctx = wx.createCanvasContext('myCanvas');
    ctx.setStrokeStyle('red')
    ctx.strokeRect(0, 0, 299, 399)
    ctx.setFillStyle('pink')
    ctx.fillRect(1, 1, 297, 397)
    ctx.draw()
  }
未選擇圖之前的展示

第三步:wx.chooseImage是可以從相冊選擇圖片的方法,"count"是選擇圖片的個數(shù)茎杂,這些參數(shù)官方文檔都有,我就不贅述了纫雁,上鏈接https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html

再看煌往,我的wx.chooseImage的success方法里又有一個wx.getImageInfo方法,這個是為了獲取圖片信息轧邪,看注釋掉的代碼刽脖,之前選擇的是wx.downloadFile時候,在編輯器上可以忌愚,但是真機上就不顯示圖片曲管,所以后來換了wx.getImageInfo就可以了。

官方文檔上是明確說了硕糊,如果需要繪制圖片院水,是需要將網(wǎng)絡圖片下載下來的,所以下述兩個方法都可以試試。鏈接https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.drawImage.html

  myButton: function() {
    let that = this;
    wx.chooseImage({
      count: 1,
      success: function(res) {
        const tempFilePaths = res.tempFilePaths[0]
        that.setData({
          getImg: res.tempFilePaths[0].trim()
        })
        console.log(44444, res)
        wx.getImageInfo({        
          src: that.data.getImg,
          success: function(res) {
            console.log(88888,res)
            that.drawImg(res.path.trim())            
          } 
        })
        // wx.downloadFile({
        //   url: that.data.getImg,
        //   success: function(res) {
        //     if (res.statusCode === 200) {
        //       console.log('圖片成功', res)
        //       that.drawImg(res.tempFilePath.trim())
        //     } else {
        //       reject(e);
        //     }
        //   },
        //   fail: function(err) {
        //     console.log(333, err)
        //   }
        // })
        console.log('圖片地址', res.tempFilePaths[0])
      },
    })
  }

第四步:將下載后的圖片繪制到canvas畫布上简十,如果背景等沒有更改檬某,即可以像我寫的那樣再繪制一次,如果更改螟蝙,正好可以重新繪制恢恼。我畫的比較簡單,就是一張圖片加一個介紹詞什么的胰默,你可以用用戶的名字场斑。

    const ctx = wx.createCanvasContext('myCanvas');
    ctx.setStrokeStyle('red')
    ctx.strokeRect(0, 0, 299, 399)
    ctx.setFillStyle('pink')
    ctx.fillRect(1, 1, 297, 397)
    ctx.drawImage(url, 2, 2, 296, 296)
    ctx.setFontSize(28)
    ctx.setFillStyle('#FFFFFF')
    // 文字居中 在畫布中間居中
    ctx.fillText("您好:" + this.data.name, (300 - ctx.measureText("您好:" + this.data.name).width) / 2, 330);
    // draw參數(shù)為false, 本次繪制不接著上一次繪制,默認false
    // draw參數(shù)為true, 本次繪制接著上一次繪制
    ctx.draw()
  }

第五步:就是點擊然后保存照片到手機上了,wx.canvasToTempFilePath是把當前畫布指定區(qū)域的內(nèi)容導出生成指定大小的圖片初坠, wx.saveImageToPhotosAlbum是把圖片保存到手機相冊和簸。看代碼

  getImg: function() {
    wx.canvasToTempFilePath({
      x: 0,
      y: 0,
      width: 300,
      height: 400,
      destWidth: 300,
      destHeight: 400,
      canvasId: 'myCanvas',
      success(res) {
        wx.saveImageToPhotosAlbum({
          filePath: res.tempFilePath,
          success(res) {
            wx.showToast({
              title: '保存成功啦碟刺!',
              icon: 'success'
            })
          }
        })
        console.log(res.tempFilePath)
      }
    })
  }
最后效果圖
以上就是所有的步驟锁保,如果需要的話下載鏈接,下面的drawCanvas文件夾是相關(guān)內(nèi)容半沽。

https://github.com/Yanxinyue0922/miniprogram.git

有問題可以在公眾號“越分享悅有CAI”與我探討交流哦爽柒!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市者填,隨后出現(xiàn)的幾起案子浩村,更是在濱河造成了極大的恐慌,老刑警劉巖占哟,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件心墅,死亡現(xiàn)場離奇詭異酿矢,居然都是意外死亡,警方通過查閱死者的電腦和手機怎燥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門瘫筐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人铐姚,你說我怎么就攤上這事策肝。” “怎么了隐绵?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵之众,是天一觀的道長。 經(jīng)常有香客問我依许,道長棺禾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任悍手,我火速辦了婚禮帘睦,結(jié)果婚禮上袍患,老公的妹妹穿的比我還像新娘坦康。我一直安慰自己,他們只是感情好诡延,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布滞欠。 她就那樣靜靜地躺著,像睡著了一般肆良。 火紅的嫁衣襯著肌膚如雪筛璧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天惹恃,我揣著相機與錄音夭谤,去河邊找鬼。 笑死巫糙,一個胖子當著我的面吹牛朗儒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播参淹,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼醉锄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了浙值?” 一聲冷哼從身側(cè)響起恳不,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎开呐,沒想到半個月后烟勋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體规求,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年卵惦,在試婚紗的時候發(fā)現(xiàn)自己被綠了颓哮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡鸵荠,死狀恐怖冕茅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蛹找,我是刑警寧澤姨伤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站庸疾,受9級特大地震影響乍楚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜届慈,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一徒溪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧金顿,春花似錦臊泌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嫂拴,卻和暖如春播揪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背筒狠。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工猪狈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人辩恼。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓雇庙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親运挫。 傳聞我的和親對象是個殘疾皇子状共,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

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

  • 才意識到及時總結(jié)和做筆記的重要性。很多東西都是用的時候查谁帕,用完就忘了峡继,下次還要繼續(xù)查,關(guān)鍵是依然看不懂匈挖。哎碾牌,心累康愤。...
    綠啊綠啊綠刺猬閱讀 2,838評論 2 2
  • 前言:這章我們?yōu)閳D片添加一些小物件,然后用canvas合成并導出到本地舶吗。GitHub:https://github...
    ComfyUI閱讀 5,494評論 1 9
  • 前言:上章基本實現(xiàn)保存圖片到手機相冊的功能了征冷,但是還有這么幾個問題沒有解決,本章解決這幾個問題誓琼。GitHub:ht...
    ComfyUI閱讀 17,173評論 18 12
  • 微信小程序圖片壓縮有三種方法检激,一種是使用官方提供的接口 wx.compressImage(Object objec...
    Dingry977閱讀 55,431評論 3 18
  • 久違的晴天,家長會腹侣。 家長大會開好到教室時叔收,離放學已經(jīng)沒多少時間了。班主任說已經(jīng)安排了三個家長分享經(jīng)驗傲隶。 放學鈴聲...
    飄雪兒5閱讀 7,524評論 16 22