HTML5 图像缩放,旋转,亮度调节

本文利用<img> 的属性和CSS,实现图像的缩放,旋转和亮度调节功能。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
    </head>

    <body>
        <div id='jtDiv' style="text-align:left|middle">
            缩小<input id='scaleSlider' type='range' min='0.5' max='1.5' step='0.1' value='1.0'/>放大 <br>
            <button onclick="rotateImg('right')">顺时针</button>
            <button onclick="getSrcImg()">原图</button>
            <button onclick="rotateImg('left')">逆时针</button> <br>
            变暗<input id='factorSlider' type='range' min='0.1' max='1.0' step='0.1' value='0.8'/>变亮
        </div>
        <img 
            id="Img" 
            step="0" 
            src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1496916906887&di=0b8da662a9f4246a702d22de2512ba0b&imgtype=0&src=http%3A%2F%2Fmedia-cdn.tripadvisor.com%2Fmedia%2Fphoto-o%2F05%2F2e%2F1a%2F83%2Fgetlstd-property-photo.jpg" 
            style="display: block; transform: rotate(0deg); margin: 10px auto;filter: brightness(0.8);" 
        />
    </body>

    <script type="text/javascript">
        // Get the image from id
        var img = document.getElementById('Img');
        var width = img.width;
        var height = img.height;
        var step = parseInt(img.getAttribute('step'));

        // Zoom in or out
        var scaleSlider = document.getElementById('scaleSlider'),
            scale = 1.0,
            MINIMUM_SCALE = 0.5,
            MAXIMUM_SCALE = 1.5;

        scaleSlider.onchange = function(e) {
            scale = e.target.value;
            if (scale < MINIMUM_SCALE) { 
                scale = MINIMUM_SCALE;
            } else if (scale > MAXIMUM_SCALE) {
                scale = MAXIMUM_SCALE;
            }
            zoomImg(scale);
        };

        // Brightness 
        var factorSlider = document.getElementById('factorSlider'),
            factor = 0.8,
            MINIMUM_FACTOR = 0.1,
            MAXIMUM_FACTOR = 1.0;
        factorSlider.onchange = function(e) {
            factor = e.target.value;
            if (factor < MINIMUM_FACTOR) {
                factor = MINIMUM_FACTOR;
            } else if (factor > MAXIMUM_FACTOR) {
                factor = MAXIMUM_FACTOR;
            }
            brightenImg(factor);
        }


        function getSrcImg() {
            img.width = width;
            img.height = height;
            img.style.transform = "rotate(0deg)";
            img.style.filter = "brightness(0.8)";
            scaleSlider.value = 1.0;
            factorSlider.value = 0.8;
        }


        function zoomImg(scale) {
            sw = width * scale,
            sh = height * scale;
            img.width = sw;
            img.height = sh;
        }


        function rotateImg(direction) {
            //最小与最大旋转方向,图片旋转4次后回到原方向
            var min_step = 0;
            var max_step = 3;
            if (step === null) {
                step = min_step;
            }
            if (direction == 'right') {
                step++;
                //旋转到原位置,即超过最大值
                if (step > max_step) {
                    step = min_step;
                }
            } else {
                step--;
                if (step < min_step) {
                    step = max_step;
                }
            }
            img.setAttribute('step', step);
            //旋转角度以弧度值为参数
            var degree = step * 90;
            img.style.transform = "rotate(" + degree + "deg";
        }

        function brightenImg(factor){
            img.style.filter = "brightness(" + factor + ")";
        }
    </script>
</html>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Digital2Slave

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值