我已經在JavaScript中創建了一個過濾器,它顛倒了圖像的顏色,即創建了一個負面圖像,現在,當我在瀏覽器中運行它時,需要時間來處理並返回最終的負面形象。我怎樣才能看到圖像的每個像素被倒置,而不僅僅是最終的倒像?我不希望代碼在整個像素數組上實現,然後看到其效果,我希望看到每個像素都被代碼更改爲最後一個像素。如何查看在畫布上更改的每個像素html5
var imgData = ctx.getImageData(0,0,x.width,x.height);
var d = imgData.data;
for (var i=0; i< d.length; i+=4) {
d[i] = 255 - d[i];
d[i+1] = 255 - d[i+1];
d[i+2] = 255 - d[i+2];
}
ctx.putImageData(imgData,0,0);
新規範
invert(d,0);
function invert(d,i){
if(i < d.length){
d[i] = 255 - d[i];
d[i+1] = 255 - d[i+1];
d[i+2] = 255 - d[i+2];
d[i+3] = d[i+3];
//alert(i);
var n=i/4;
var h=parseInt(n/x.width);
var w = n - h*x.width;
ctx.fillStyle='rgba('+d[i]+','+d[i+1]+','+d[i+2]+','+d[i+3]/255+')';
ctx.fillRect(w,h,1,1);
//if(i>91000){alert(i);}
setTimeout(invert(d,i+4),50);
}
else{return ;}
}
應該變種X = N - Y *畫布。寬度,糾正後的邏輯是正確的,但仍然是圖片反轉非常快,所以我決定在每個像素更新後添加一個setTimeout,並更改了代碼,但這不起作用。我正在編輯代碼。 –
感謝我的錯誤 - 我今天早上很匆忙!我已經發布了一個演示,首先完全顛倒「imageData.data」,然後使用這些轉換後的像素爲觀看者減緩曝光。祝你的項目好運! – markE
謝謝,它幫了很多:) –