HTML 5 캔버스의 픽셀 조작을 사용하여 몇 가지 동적 인 시각적 효과를 시도하지만 CanvasPixelArray의 픽셀 설정이 엄청나게 느린 문제가 있습니다. 예를 들어HTML5의 CanvasPixelArray 값을 너무 느리게 설정하는 이유와 어떻게하면 더 빨리 할 수 있습니까?
나는 코드가 같은 경우 :
imageData = ctx.getImageData(0, 0, 500, 500);
for (var i = 0; i < imageData.length; i += 4){
imageData.data[i] = buffer[i];
imageData.data[i + 1] = buffer[i + 1];
imageData.data[i + 2] = buffer[i + 2];
}
ctx.putImageData(imageData, 0, 0);
크롬 계시와 프로파일, 그것은 CanvasPixelArray를 사용하지 않는 다음과 같은 코드보다 44 % 느리게 실행됩니다.
tempArray = new Array(500 * 500 * 4);
imageData = ctx.getImageData(0, 0, 500, 500);
for (var i = 0; i < imageData.length; i += 4){
tempArray[i] = buffer[i];
tempArray[i + 1] = buffer[i + 1];
tempArray[i + 2] = buffer[i + 2];
}
ctx.putImageData(imageData, 0, 0);
내 생각 엔이 둔화의 이유는 CanvasPixelArray에서 사용되는 자바 스크립트의 복식 및 내부 부호없는 8 비트 정수 사이의 변환에 의한 것입니다.
- 이 추측은 맞습니까?
- CanvasPixelArray에서 값을 설정하는 시간을 절약 할 수있는 방법이 있습니까?
오래된 질문을 그리고 아마도 오래된 것입니다. 두 번째 예제에서는'imageData'에 아무 것도하지 않는 것처럼 보입니다 (예.값을'tempArray'에서'imageData'로 설정하지 않습니다)? – ZachB
@ ZachB 예가 정확합니다. 당시 병 목으로 보인 CanvasPixelArray는 사용하지 않습니다. 이 문제를 해결 한 몇 가지 훌륭한 답변은 아래를 참조하십시오. – Nixuz
아, 질문을 잘못 읽었습니다. :) – ZachB