如何克隆ImageData?

时间:2012-06-14 05:39:48

标签: javascript

这很有效,但我觉得这段代码很冗长。 我正在寻找更好的主意。

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);
};

2 个答案:

答案 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
)