新版Canvas的createImageData方法返回的imageData.data属性不能修改?
发布于 6 年前 作者 guiying89 10458 次浏览 来自 官方Issues

代码片段     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的值。

回到顶部