정확하게 이해한다면 : 캔버스가 아닌 다른 소스에서 가져온 픽셀 배열이 있고 해당 데이터를 캔버스에 표시하고 싶습니까?
수동으로이 픽셀 배열을 PNG 또는 JPEG로 인코딩 한 다음 Base-64로 자바 스크립트에서 상대적으로 느린 프로세스가됩니다.
대신 함수에서 형식화 된 배열을 반환하고 Uint32Array
보기를 사용하여 컨텍스트 개체에 createImageData
을 사용하여 캔버스의 배열에 루프의 데이터를 복사 할 수 있습니다.
모든 비트 맵에서와 마찬가지로 함수는 너비와 높이를 반환해야하므로 치수가 항상 미리 알려지지 않으면 함수가 배열을 참조하여 개체를 최적으로 반환해야합니다.
/// some function returning a bitmap/pixel array
function getSomeImageData() {
...
return {
width: width,
height: height,
bitmap: myTypedArray
}
}
후, 복사 과정에서 :
/// get the result from the function
var o = getSomeImageData();
/// create an empty bitmap
var img = context.createImageData(o.width, o.height);
/// create unsigned 32-bit views for the typed arrays
var dst = new Uint32Array(img.data.buffer);
var src = new Uint32Array(o.bitmap);
/// copy using 32-bits integers
var i = src.length;
while(i--) dst[i] = src[i];
/// put image onto the canvas
context.putImageData(img, 0, 0);
(게시 된 기록 인라인 테스트되지 않음)
예
출처
2013-10-29 05:35:08
K3N