繁体   English   中英

使用 javascript 提高和降低 canvas 的亮度和对比度的性能改进

[英]Performance improvement for increasing and decreasing brightness and contrast of canvas using javascript

我正在尝试使用输入范围增加和减少 canvas 的亮度和对比度。 为此,我使用了以下代码。

Html:

 <canvas id="canvas"></canvas>
 <input id="range" type="range" value="0" min="-100" max="100">

Javascript:

brightnessRange = document.getElementById('range');
brightnessRange?.addEventListener("input", function (e) {
    e.preventDefault();

    var img = new Image();
    img.src = 'http://webgl-workshop.com/assets/e826db271aa3c03c69c4aca1e20abf5b.jpg';

    imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
    let arr = imgData.data;

    for (var i = 0; i < arr.length; i += 4) {
        arr[i] = arr1[i] + 255 * (+brightnessRange.value / 100);
        arr[i + 1] = arr1[i + 1] + 255 * (+brightnessRange.value / 100);
        arr[i + 2] = arr1[i + 2] + 255 * (+brightnessRange.value / 100);
    }

    imgData.data = arr;
    ctx.putImageData(imgData, 0, 0);
}

我正在使用类似类型的代码进行对比。 上面的代码工作太慢了。 还有其他方法可以实现吗?

请注意:我不想使用上下文过滤器,因为它在某些浏览器中不支持。

对于亮度,您可以使用这里描述的globalCompositeOperationHTML5 Canvas 亮度控制

至于对比,没有过滤器,提高性能的唯一方法是将 WebGL 与 canvas 一起使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM