2012-06-14 3 views
6

이 코드는 작동하지만이 코드가 길다는 느낌이 듭니다. 더 나은 아이디어를 찾고 있습니다.ImageData를 복제하는 방법?

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

가능한 복제 (http://stackoverflow.com/questions/5642383/copy-imagedata-by-value-in-javascript) – brichins

답변

8

TypedArray.prototype.set()으로 직접 데이터를 복사 할 수 있습니다.

var imageDataCopy = new Uint8ClampedArray(originalImageData.data); 
imageDataCopy.data.set(originalImageData.data); 

이것은 originalImageData에 동일하게 imageDataCopy의 내용을 설정한다.

+0

감사합니다! 이 코드를 시도 중입니다 – minodisk

+0

원본 개체 란 무엇이며 복제본은 무엇입니까? doens't는 저를 위해 작동하는 것처럼 보입니다 – LobsterMan

+1

이것은 나쁘고 불분명 한 코드 예제입니다 - 또한, 나는 그것이 시대에 뒤떨어져 있고 현대 브라우저에서 작동하지 않는다고 생각합니다. –

0

ImageData 생성자는 이미지 데이터 배열을 허용합니다.

const imageDataCopy = new ImageData(
    new Uint8ClampedArray(imageData.data), 
    imageData.width, 
    imageData.height 
) 
[자바 스크립트에서 값에 의한 복사 imageData의]의