這篇文章給大家分享的是有關微信小程序中如何生成圖片的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
首先,在小程序里進行繪圖操作需要用到<canvas>組件,步驟大致分為以下3個部分:一張大的背景圖,一段動態的文字(‘標題 用戶名 及其他信息’),以及一個小程序碼圖片。那我們就先在我們的wxml代碼中放入如下的<canvas>:
<!--wxml代碼-->
<view style='width:100%;height:100%;' bindlongpress='saveInviteCard'>
<canvas canvas-id="shareCanvas" style="width:{{windowWidth}}px;height:{{windowHeight}}px" ></canvas>
</view>第三方函數引入
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大家可自己百度下載,源文件代碼太長,我這里就不復制粘貼了。
//獲取手機寬高
wx.getSystemInfo({
success: function (res) {
wc.put('phoneInfo', res)
}
});
var windowHeight = phoneInfo.windowHeight, windowWidth = phoneInfo.windowWidth
self.setData({
windowHeight: windowHeight,
windowWidth: windowWidth
})
//在這段代碼中,我們通過使用wx.getImageInfo這個API來下載一個網絡圖片到本地(并可獲取該圖片的尺寸等其他信息),然后調用ctx.drawImage方法將圖片繪制到畫布上,填滿畫布。
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)
//寫入文字
ctx.setTextAlign('center') // 文字居中
ctx.setFillStyle('#f3a721') // 文字顏色:黑色
ctx.setFontSize(22) // 文字字號:22px
ctx.fillText("作者:墜夢—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: '邀請卡繪制失敗!',
image:'../../asset/images/warning.png'
})
}
})這樣,差不多我們的分享圖就生成好了。
要把它保存進用戶的系統相冊中去,實現這個功能,我們主要靠wx.canvasToTempFilePath和wx.saveImageToPhotosAlbum這兩個API。
主要的流程就是先通過wx.canvasToTempFilePath將<canvas>上繪制的圖像生成臨時文件的形式,然后再通過wx.saveImageToPhotosAlbum進行保存到系統相冊的操作。
//保存邀請卡
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: '已保存到相冊'
})
})
}感謝各位的閱讀!關于“微信小程序中如何生成圖片”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。