小程序自 2.9.0 起,不再推荐使用其自己封装的 Canvas Context,而是更加推荐大家使用标准的 Canvas 2D API 来完成相关操作。因此,对于开发者来说,需要将过去的 Canvas API 调整为新的标准的 API 。
刚好我最近也实现了类似的功能,将这部分逻辑分享给大家。
页面布局
<view>
<view><button bindtap="chooseImage">选择图片</button></view>
<view><canvas id="myCanvas" type="2d" style="background-color:gray;width: 100%;margin-top: 100rpx;"></canvas></view>
</view>
Code language: HTML, XML (xml)
页面逻辑
Page({
chooseImage(){
// 创建一个 Query
const query = wx.createSelectorQuery()
// 选中 Canvas 对象
query.select('#myCanvas')
.fields({
node: true,
size: true // 提取 Node 信息
})
.exec((res) => {
// 获取到 Canvas Node
const canvas = res[0].node
// 获取到 Context
const ctx = canvas.getContext('2d')
wx.chooseMedia({
count: 1,
success: function (res) {
// 提取图片的基本信息
wx.getImageInfo({
src: res.tempFiles[0].tempFilePath,
success: imgInfo => {
// 使用 canvas.createImage 来创建一个图片
const img = canvas.createImage()
img.src = imgInfo.path
img.onload = () => {
// 将图片画在画布上
ctx.drawImage(img, 0, 0, imgInfo.width, imgInfo.height)
}
}
})
}
})
})
}
})
Code language: JavaScript (javascript)