const url = './WX20230713-152705@2x.png'
Page({
data: {
width: 256,
height: 256,
},
async _dataurl() {
let {node, width, height} = await new Promise(r => {
wx.createSelectorQuery()
.select('#canvas')
.fields({node: true, size: true}, r)
.exec()
})
console.log(node, width, height);
let img = node.createImage()
await new Promise(resolve => {
img.onload = resolve
img.src = url
})
node.getContext('2d').drawImage(img, 0, 0, width, height)
let dataURL = node.toDataURL()
if (dataURL.length > 6) {
console.log(dataURL.length)
} else {
console.log(dataURL)
}
},
plus() {
let {width, height} = this.data
width += 256
height += 256
this.setData(
{width, height},
this._dataurl
)
},
minus() {
let {width, height} = this.data
width -= 256
height -= 256
this.setData(
{width, height},
this._dataurl
)
}
})
可以看到,在 Canvas 尺寸大于 1536 x 1536 时,直接返回了`data:,`,整个数据部分丢失。
几个问题:
一、为什么随着 Canvas 尺寸的增加,DataURI 的长度却在变小?
二、为什么在并不大的尺寸下会丢失数据?
三、iOS、Android、开发者工具表现为何不一致?
四、这个接口成功返回的 Canvas 尺寸的阈值是多少?