這篇文章給大家分享的是有關(guān)微信小程序中如何生成圖片的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),富民企業(yè)網(wǎng)站建設(shè),富民品牌網(wǎng)站建設(shè),網(wǎng)站定制,富民網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,富民網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
首先,在小程序里進(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方法將圖片繪制到畫布上,填滿畫布。
const wxGetImageInfo = util.promisify(wx.getImageInfo)
//繪制二維碼
Promise.all([
//背景圖
wxGetImageInfo({
src: '/upload/otherpica42/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) // 文字字號(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í),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
網(wǎng)頁(yè)題目:微信小程序中如何生成圖片
文章源于:http://www.chinadenli.net/article48/iehdhp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、云服務(wù)器、網(wǎng)站建設(shè)、微信小程序、營(yíng)銷型網(wǎng)站建設(shè)、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)