【发布时间】:2015-06-28 11:44:42
【问题描述】:
我在 javascript 中创建了一个过滤器,它可以反转图像的颜色,即创建一个负图像,现在当我在浏览器中运行它时,它需要一些时间来处理,然后返回最终的负图像。我怎样才能看到图像的每个像素都被反转,而不仅仅是最终的反转图像?我不想等待代码在整个像素阵列上实现然后查看其效果,而是希望看到每个像素都被代码更改直到最后一个像素。
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 ;}
}
【问题讨论】:
标签: javascript html algorithm image-processing canvas