新版Canvas的createImageData方法返回的imageData.data属性不能修改?
代码片段 https://image.wxopen.club/content_df7ca440-4f1b-11ea-bda8-001a7dda7111.png
使用了2.9.0以上才支持的新版Canvas,
const imageData = context.createImageData(width, height) ; imageData.data[0] = 100; console.log(imageData.data[0]); // iOS上输出0 |
之后还测试了
imageData.data.set( new Uint8ClampedArray(hasExistArrayBuffer)); Object.defineProperty(imageData, 'data' , { get() { return new Uint8ClampedArray(hasExistArrayBuffer); } }); |
最终结果:
安卓上使用Object.defineProperty可劫持,也可改变数值,但是putImageData之后,再wx.canvasToTempFilePath出来的图片没有内容。并且wx.canvasToTempFilePath报错,如下图所示:
重要:iOS上三种方法都不可改变imageData.data的值。