这很有效,但我觉得这段代码很冗长。 我正在寻找更好的主意。
var clone = function(imageData) {
var canvas, context;
canvas = document.createElement('canvas');
canvas.width = imageData.width;
canvas.height = imageData.height;
context = canvas.getContext('2d');
context.putImageData(imageData, 0, 0);
return context.getImageData(0, 0, imageData.width, imageData.height);
};
答案 0 :(得分:8)
使用TypedArray.prototype.set()
,您可以直接复制数据。
var imageDataCopy = new Uint8ClampedArray(originalImageData.data);
imageDataCopy.data.set(originalImageData.data);
这会将imageDataCopy
的内容设置为与originalImageData
相同。
答案 1 :(得分:6)
ImageData构造函数接受图像数据数组。
const imageDataCopy = new ImageData(
new Uint8ClampedArray(imageData.data),
imageData.width,
imageData.height
)