JavaScript调整亮度

起因

最近在Web项目,有一个需求调整图片的亮度,想起Canvas可以的,就简单做一个测试.

Html和JavaScript代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>图片亮度测试</title>
</head>
<body>
    <input type="range" name="points" min="0" max="255" id="my_progress" onprogress="" />
    <img src="1.bmp" width="100" id="currentSrc" />

    <img src="" width="100" id="newSrc" />
    <canvas id="container" style="width:100px;border:1px solid red;display:none;"></canvas>
    <script type="text/javascript">

        var my_progress = document.querySelector('#my_progress');
        my_progress.value = 0;
        my_progress.addEventListener('change', function () {
            var val = this.value;
            var current_val = parseInt(val, 10);
            if (current_val > 0) {
                image_light(current_val);
            }
        });

        function image_light(val) {
            var img = new Image();
            img.src = '1.bmp';
            var width = img.width;
            var height = img.height;

            var src = document.querySelector('#currentSrc');
            var container = document.querySelector('#container');
            var newSrc = document.querySelector('#newSrc');
            container.width = width;
            container.height = height;
            var ctx = container.getContext('2d');
            ctx.drawImage(src, 0, 0);

            var img_data = ctx.getImageData(1, 1, width, height);
            var data = img_data.data;
            var img_width = img_data.data.width;
            var img_height = img_data.data.height;

            for (var i = 0; i < data.length; i += 4) {
                var blue = data[i];
                var green = data[i + 1];
                var red = data[i + 2];
                data[i] += val;
                data[i + 1] += val;
                data[i + 2] += val;
            }
            ctx.putImageData(img_data, 0, 0);
            var data_url = container.toDataURL('image/bmp');
            newSrc.src = data_url;
        }
    </script>
</body>
</html>

效果

JavaScript调整图片亮度
单纯调整图片rgb的值,效果不是很好,因为图片少则几十张,多着上百张.最终还是放在客户端处理.
秋风 2019-03-13