【问题标题】:How to create Image effect filters panel by javascript?如何通过javascript创建图像效果过滤器面板?
【发布时间】:2018-09-18 23:42:36
【问题描述】:



我想在面板下面构建这样的图像过滤器面板。


是否有任何 javascript 库支持创建此面板?
(特别是当我们移动密集滑块时,所有其他滑块都会自动滑动)

谢谢!

【问题讨论】:

    标签: javascript html css html5-canvas


    【解决方案1】:

    类似的东西???

    请宽屏观看

    $('.filter input[type=range]').on('input change', function() {
    	$('img').css({
    		'-webkit-filter': 'blur(' + $('#blur').val() + 'px)brightness(' + $('#brightness').val() + ')saturate(' + $('#saturate').val() + '%)hue-rotate(' + $('#hue-rotate').val() + 'deg)contrast(' + $('#contrast').val() + '%)invert(' + $('#invert').val() + '%)grayscale(' + $('#grayscale').val() + '%)sepia(' + $('#sepia').val() + '%)',
    		'-moz-filter': 'blur(' + $('#blur').val() + 'px)brightness(' + $('#brightness').val() + ')saturate(' + $('#saturate').val() + '%)hue-rotate(' + $('#hue-rotate').val() + 'deg)contrast(' + $('#contrast').val() + '%)invert(' + $('#invert').val() + '%)grayscale(' + $('#grayscale').val() + '%)sepia(' + $('#sepia').val() + '%)',
    		'-o-filter': 'blur(' + $('#blur').val() + 'px)brightness(' + $('#brightness').val() + ')saturate(' + $('#saturate').val() + '%)hue-rotate(' + $('#hue-rotate').val() + 'deg)contrast(' + $('#contrast').val() + '%)invert(' + $('#invert').val() + '%)grayscale(' + $('#grayscale').val() + '%)sepia(' + $('#sepia').val() + '%)',
    		'-ms-filter': 'blur(' + $('#blur').val() + 'px)brightness(' + $('#brightness').val() + ')saturate(' + $('#saturate').val() + '%)hue-rotate(' + $('#hue-rotate').val() + 'deg)contrast(' + $('#contrast').val() + '%)invert(' + $('#invert').val() + '%)grayscale(' + $('#grayscale').val() + '%)sepia(' + $('#sepia').val() + '%)',
    	});
    });
    
    $('.transformation input[type=range]').on('input change', function() {
    	$('img').css({
    		'-ms-transform': 'rotate(' + $('#rotate').val() + 'deg) scale(' + $('#scale-x').val() + ',' + $('#scale-y').val() + ') translate(' + $('#translate-x').val() + 'px,' + $('#translate-y').val() + 'px) skew(' + $('#skew').val() + 'deg)',
    		'-webkit-transform': 'rotate(' + $('#rotate').val() + 'deg) scale(' + $('#scale-x').val() + ',' + $('#scale-y').val() + ') translate(' + $('#translate-x').val() + 'px,' + $('#translate-y').val() + 'px) skew(' + $('#skew').val() + 'deg)',
    		'transform ': 'rotate(' + $('#rotate').val() + 'deg) scale(' + $('#scale-x').val() + ',' + $('#scale-y').val() + ') translate(' + $('#translate-x').val() + 'px,' + $('#translate-y').val() + 'px) skew(' + $('#skew').val() + 'deg)'
    	});
    });
    body {
      font-family: Helvetica;
      color: #2c3e50;
    }
    
    .wrapper {
      display: table;
      width: 100%;
    }
    .wrapper-content {
      display: table-cell;
      width: 50%;
      vertical-align: top;
    }
    .filter, .transformation {
      display: table;
      width: 100%;
    }
    label {
      display: table-cell;
      width: 20%;
      padding-right: 10px;
      text-align: right;
      line-height: 28px;
    }
    input {
      vertical-align: middle;
      display: table-cell;
      width: 80%;
    }
    img {
      max-height: 620px;
      max-width: 620px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="wrapper">
        <div class="wrapper-content">
            <div class="filter">
                <label>Blur:</label>
                <input type="range" id="blur" value="0" min="0" max="4" step="0.01" />
            </div>
            <div class="filter">
                <label>Brightness:</label>
                <input type="range" id="brightness" value="1" min="0" max="1" step="0.01" />
            </div>
            <div class="filter">
                <label>Saturate:</label>
                <input type="range" id="saturate" value="100" min="0" max="200" />
            </div>
            <div class="filter">
                <label>Hue:</label>
                <input type="range" id="hue-rotate" value="0" min="0" max="360" />
            </div>
            <div class="filter">
                <label>Contrast:</label>
                <input type="range" id="contrast" value="100" min="0" max="200" />
            </div>
            <div class="filter">
                <label>Invert:</label>
                <input type="range" id="invert" value="0" min="0" max="100" />
            </div>
            <div class="filter">
                <label>Grayscale:</label>
                <input type="range" id="grayscale" value="0" min="0" max="100" />
            </div>
            <div class="filter">
                <label>Sepia:</label>
                <input type="range" id="sepia" value="0" min="0" max="100" />
            </div>
            <br />
            <div class="transformation">
                <label>Rotate:</label>
                <input type="range" id="rotate" value="0" min="-360" max="360" />
            </div>
            <div class="transformation">
                <label>Scale (x):</label>
                <input type="range" id="scale-x" value="1" min="-4" max="4" step="0.1" />
            </div>
            <div class="transformation">
                <label>Scale (y):</label>
                <input type="range" id="scale-y" value="1" min="-4" max="4" step="0.1" />
            </div>
            <div class="transformation">
                <label>Translate (x):</label>
                <input type="range" id="translate-x" value="0" min="-80" max="80" />
            </div>
            <div class="transformation">
                <label>Translate (y):</label>
                <input type="range" id="translate-y" value="0" min="-80" max="80" />
            </div>
            <div class="transformation">
                <label>Skew:</label>
                <input type="range" id="skew" value="0" min="-360" max="360" />
            </div>
        </div>
        <div class="wrapper-content">
            <img src="http://patricktayloredwards.com/images/background.8fcc83c6.jpg" />
        </div>
    </div>

    【讨论】:

    • 很好的答案,但我想要一个额外的 Intensive 滑块,它将支持用户更轻松地调整(所有其他滑块将通过 Intensive 滑块值正确更新)。您对这个案例有什么建议吗?
    • @BùiNgọcThơ 哦,对不起,我没有考虑幻灯片部分
    • 你对这个 Intensive 滑块有什么建议吗?
    • 我想要这样的东西,但在普通的 js 中
    猜你喜欢
    • 2017-07-29
    • 2017-06-20
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 2012-08-18
    • 2014-08-21
    • 2022-01-06
    • 2023-02-21
    相关资源
    最近更新 更多