您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)微信小程序中如何生成圖片的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
首先,在小程序里進(jìn)行繪圖操作需要用到<canvas>組件,步驟大致分為以下3個(gè)部分:一張大的背景圖,一段動(dòng)態(tài)的文字(‘標(biāo)題 用戶名 及其他信息’),以及一個(gè)小程序碼圖片。那我們就先在我們的wxml代碼中放入如下的<canvas>:
<!--wxml代碼--> <view style='width:100%;height:100%;' bindlongpress='saveInviteCard'> <canvas canvas-id="shareCanvas" style="width:{{windowWidth}}px;height:{{windowHeight}}px" ></canvas> </view>
第三方函數(shù)引入
const util = require('../../utils/util.js')
//util.js var Promise = require('../components/bluebird.min.js') module.exports = { promisify: api => { return (options, ...params) => { return new Promise((resolve, reject) => { const extras = { success: resolve, fail: reject } api({ ...options, ...extras }, ...params) }) } } }
bluebird.min.js大家可自己百度下載,源文件代碼太長(zhǎng),我這里就不復(fù)制粘貼了。
//獲取手機(jī)寬高 wx.getSystemInfo({ success: function (res) { wc.put('phoneInfo', res) } }); var windowHeight = phoneInfo.windowHeight, windowWidth = phoneInfo.windowWidth self.setData({ windowHeight: windowHeight, windowWidth: windowWidth }) //在這段代碼中,我們通過(guò)使用wx.getImageInfo這個(gè)API來(lái)下載一個(gè)網(wǎng)絡(luò)圖片到本地(并可獲取該圖片的尺寸等其他信息),然后調(diào)用ctx.drawImage方法將圖片繪制到畫(huà)布上,填滿畫(huà)布。 const wxGetImageInfo = util.promisify(wx.getImageInfo) //繪制二維碼 Promise.all([ //背景圖 wxGetImageInfo({ src: 'https://cache.yisu.com/upload/information/20201208/261/13973.jpg' }), //二維碼 wxGetImageInfo({ src: 'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1898297765,3486952215&fm=26&gp=0.jpg' }) ]).then(res => { console.log(res) if (res[0].errMsg == "getImageInfo:ok" && res[1].errMsg == "getImageInfo:ok"){ const ctx = wx.createCanvasContext('shareCanvas') // 底圖 ctx.drawImage(res[0].path, 0, 0, windowWidth, windowHeight) //寫(xiě)入文字 ctx.setTextAlign('center') // 文字居中 ctx.setFillStyle('#f3a721') // 文字顏色:黑色 ctx.setFontSize(22) // 文字字號(hào):22px ctx.fillText("作者:墜夢(mèng)—Eric", windowWidth / 2, windowHeight / 2) // 小程序碼 const qrImgSize = 150 ctx.drawImage(res[1].path, (windowWidth - qrImgSize) / 2, windowHeight / 1.8, qrImgSize, qrImgSize) ctx.stroke() ctx.draw() }else{ wx.showToast({ title: '邀請(qǐng)卡繪制失敗!', image:'../../asset/images/warning.png' }) } })
這樣,差不多我們的分享圖就生成好了。
要把它保存進(jìn)用戶的系統(tǒng)相冊(cè)中去,實(shí)現(xiàn)這個(gè)功能,我們主要靠wx.canvasToTempFilePath
和wx.saveImageToPhotosAlbum
這兩個(gè)API。
主要的流程就是先通過(guò)wx.canvasToTempFilePath
將<canvas>
上繪制的圖像生成臨時(shí)文件的形式,然后再通過(guò)wx.saveImageToPhotosAlbum
進(jìn)行保存到系統(tǒng)相冊(cè)的操作。
//保存邀請(qǐng)卡 saveInviteCard:function(){ console.log('保存圖片') const wxCanvasToTempFilePath = util.promisify(wx.canvasToTempFilePath) const wxSaveImageToPhotosAlbum = util.promisify(wx.saveImageToPhotosAlbum) wxCanvasToTempFilePath({ canvasId: 'shareCanvas' }, this).then(res => { return wxSaveImageToPhotosAlbum({ filePath: res.tempFilePath }) }).then(res => { wx.showToast({ title: '已保存到相冊(cè)' }) }) }
感謝各位的閱讀!關(guān)于“微信小程序中如何生成圖片”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。