在JavaScript中,您可以直接使用
Uint8ClampedArray
操纵图像的像素。在将该图像渲染到画布上之前,您需要执行以下操作:
创建一个
ImageData
对象。使用
ImageData.data.set
将Uint8ClampedArray
渲染到ImageData
对象中。使用
context.putImageData
将ImageData
对象绘制到画布上。
Uint8ClampedArray
到实际在屏幕上看到它,需要进行不少于3次O(N)的复制操作。对于大型图像,这可能非常有害。一种解决方案是缓存ImageData对象,并将指针imageData.data
替换为您的Uint8ClampedArray
- 但是imageData.data
是只读的!有没有更有效的方法来做到这一点?