阅读这篇this post之后,我正在使用Canvas来处理一些图像过滤器。基本上,它会遍历所有像素并将值更新为某种值。

我现在想做的是使用输入范围来调整图像的亮度。
因此,我附加了onChange事件处理程序,并在用户每次移动滑块时调用该函数以更新 Canvas 。

显然,这会使页面放慢很多,因为当用户将滑块从10移到40时,它将调用该函数30次!
我尝试使用这样的标志:

if (!myFlag) {
 myFlag = true;
 ...call the function...
 myFlag = false;
}

但这并不是我想要的,因为我想“实时”看到它(例如在photoshop中)

谁能给我提示解决这个问题?可能是,我应该使用另一个事件,或者可能是一种完全不同的方法来处理imageData。

最佳答案

可能无法达到您预期的效果,但是请尝试添加超时

var myFlag = false;
var filterTimeout;
slider.onChange = function() {
    if (!myFlag) {
        myFlag = true;
        clearTimeout(filterTimeout);
        filterTimeout = setTimeout(function() {
            // apply the filter hear

            myFlag = false;
        }, 1);
    }
}

关于javascript - 使用 Canvas 和范围输入事件的动态图像过滤器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7734303/

10-09 18:49