欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

JavaScript實(shí)現(xiàn)Ps濾鏡效果的方法

這篇文章主要介紹了JavaScript實(shí)現(xiàn)Ps濾鏡效果的方法,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)是一家以重慶網(wǎng)站建設(shè)公司、網(wǎng)頁(yè)設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、成都網(wǎng)站營(yíng)銷、小程序App開發(fā)等移動(dòng)開發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為濕噴機(jī)等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務(wù)。

思路

其實(shí)非常非常趕單~
CSS3多了一個(gè)filter的屬性,非常強(qiáng)大(兼容性一般)!
我們只要根據(jù)輸入的值/滑塊滑動(dòng)的值來(lái)動(dòng)態(tài)更改css中filter屬性的值即可

filter

  • none    默認(rèn)值,沒(méi)有效果。
  • blur(px)    給圖像設(shè)置高斯模糊。"radius"一值設(shè)定高斯函數(shù)的標(biāo)準(zhǔn)差,或者是屏幕上以多少像素融在一起, 所以值越大越模糊;不接受百分比值。
  • brightness(%)    給圖片應(yīng)用一種線性乘法,使其看起來(lái)更亮或更暗。如果值是0%,圖像會(huì)全黑。值是100%,則圖像無(wú)變化。其他的值對(duì)應(yīng)線性乘數(shù)效果。值超過(guò)100%也是可以的,圖像會(huì)比原來(lái)更亮。如果沒(méi)有設(shè)定值,默認(rèn)是1。
  • contrast(%)    調(diào)整圖像的對(duì)比度。值是0%的話,圖像會(huì)全黑。值是100%,圖像不變。值可以超過(guò)100%,意味著會(huì)運(yùn)用更低的對(duì)比。若沒(méi)有設(shè)置值,默認(rèn)是1。
  • drop-shadow(h-shadow v-shadow blur spread color)    給圖像設(shè)置一個(gè)陰影效果。陰影是合成在圖像下面,可以有模糊度的,可以以特定顏色畫出的遮罩圖的偏移版本。 函數(shù)接受<shadow>(在CSS3背景中定義)類型的值,除了"inset"關(guān)鍵字是不允許的。該函數(shù)與已有的box-shadow box-shadow屬性很相似;不同之處在于,通過(guò)濾鏡,一些瀏覽器為了更好的性能會(huì)提供硬件加速。
  • grayscale(%)    將圖像轉(zhuǎn)換為灰度圖像。值定義轉(zhuǎn)換的比例。值為100%則完全轉(zhuǎn)為灰度圖像,值為0%圖像無(wú)變化。值在0%到100%之間,則是效果的線性乘子。若未設(shè)置,值默認(rèn)是0;
  • hue-rotate(deg)    圖像應(yīng)用色相旋轉(zhuǎn)。"angle"一值設(shè)定圖像會(huì)被調(diào)整的色環(huán)角度值。值為0deg,則圖像無(wú)變化。若值未設(shè)置,默認(rèn)值是0deg。該值雖然沒(méi)有最大值,超過(guò)360deg的值相當(dāng)于又繞一圈。
  • invert(%)    反轉(zhuǎn)輸入圖像。值定義轉(zhuǎn)換的比例。100%的價(jià)值是完全反轉(zhuǎn)。值為0%則圖像無(wú)變化。值在0%和100%之間,則是效果的線性乘子。 若值未設(shè)置,值默認(rèn)是0。
  • opacity(%)    轉(zhuǎn)化圖像的透明程度。值定義轉(zhuǎn)換的比例。值為0%則是完全透明,值為100%則圖像無(wú)變化。值在0%和100%之間,則是效果的線性乘子,也相當(dāng)于圖像樣本乘以數(shù)量。 若值未設(shè)置,值默認(rèn)是1。該函數(shù)與已有的opacity屬性很相似,不同之處在于通過(guò)filter,一些瀏覽器為了提升性能會(huì)提供硬件加速。
  • saturate(%)    轉(zhuǎn)換圖像飽和度。值定義轉(zhuǎn)換的比例。值為0%則是完全不飽和,值為100%則圖像無(wú)變化。其他值,則是效果的線性乘子。超過(guò)100%的值是允許的,則有更高的飽和度。 若值未設(shè)置,值默認(rèn)是1。
  • sepia(%)     將圖像轉(zhuǎn)換為深褐色。值定義轉(zhuǎn)換的比例。值為100%則完全是深褐色的,值為0%圖像無(wú)變化。值在0%到100%之間,則是效果的線性乘子。若未設(shè)置,值默認(rèn)是0;
  • url() URL函數(shù)接受一個(gè)XML文件,該文件設(shè)置了 一個(gè)SVG濾鏡,且可以包含一個(gè)錨點(diǎn)來(lái)指定一個(gè)具體的濾鏡元素。

使用直接就這樣

img {
    -webkit-filter: contrast(200%); /* Chrome, Safari, Opera */
    filter: contrast(200%) opacity(0.5) //要多少屬性加多少;
}

開始操作

  • 寫一個(gè)過(guò)濾屬性滑塊和輸入框,互相綁定值,如果用vue就簡(jiǎn)單了hhh
//html
     <li>
      <label for="contrast">對(duì)比度(0-200):</label>
      <input id="contrast" max="200" min="0" step="1" type="range">
      <input id="contrast-val" class="val-box" type="number">
    </li>
//js
//注冊(cè)過(guò)濾器
function filter(type) {
  //獲取濾鏡類型關(guān)聯(lián)的dom節(jié)點(diǎn)
  //綁定change事件,還有回車按鍵事件
  
  let ele = document.getElementById(type);
  let ele_val = document.getElementById(type + '-val');

  //輸入框輸入值按下回車,把值更新到滑塊上
  ele_val.addEventListener('keyup',function(e){
    if(e.keyCode == 13){
    ele.value = ele_val.value;
    //同時(shí)更新濾鏡效果
    setCss(type, ele_val.value);

    }
  })
   
 //滑塊滑動(dòng)的時(shí)候,把值更新在右邊的輸入框中
  ele.addEventListener('change', function() {
    ele_val.value = ele.value;
    //同時(shí)更新濾鏡效果
    setCss(type, ele_val.value);
  });
}
  • 寫一個(gè)文件選擇,預(yù)覽圖片
//html
<input id="file" type="file" accept="image/*">
<!-- 圖片預(yù)覽框 -->
<p>
    <img id="img" src="" alt="">
</p>
//選擇文件
function fileSelect() {
  let img = document.getElementById('img');
  document.getElementById('file').onchange = function() {
    var reader = new FileReader();
    reader.onload = function(e) {
      img.src = e.target.result;
    }
    reader.readAsDataURL(this.files[0]);
  }
}
  • 寫一個(gè)根據(jù)輸入值更新CSS的方法
//更新css屬性
function setCss(type, val) {
  let img = document.getElementById('img');
  //已經(jīng)存在某個(gè)濾鏡,更改濾鏡數(shù)值
  if (img.style.filter.indexOf(type) > -1) {
    //利用正則則出濾鏡名稱更改其值
    let reg = new RegExp("(?<=" + type + ")" + "\\(.*\\)", "g")
    img.style.filter = img.style.filter.replace(reg, function(match) { return `(${val/100})` });
  } else {
    //直接添加新濾鏡
    img.style.filter += `${type}(${val/100})`
  }
}

注意

由于這個(gè)demo只是隨便寫寫,只是前幾天用到這個(gè)filter屬性感覺有點(diǎn)厲害,就拿來(lái)玩玩,文中的代碼寫得很丑,也沒(méi)什么規(guī)范,只適用于‘寫來(lái)玩玩’的范疇,一些輸入驗(yàn)證,節(jié)流,參數(shù)的規(guī)范都沒(méi)有做,見諒。
本來(lái)還打算做一個(gè)導(dǎo)出使用濾鏡后的照片的,用的html2canvas來(lái)截圖導(dǎo)出,然后發(fā)現(xiàn),它不支持!??!不支持這個(gè)css屬性??!截出來(lái)的圖是原圖!這可是真的難受啊馬飛,現(xiàn)在還沒(méi)有解決方案,如果有大佬知道如何保存使用濾鏡后的圖片到本地的,請(qǐng)?jiān)谠u(píng)論區(qū)留下您的想法,非常感謝!

辣雞源碼

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>photoshop-web</title>
</head>

<body>
  <ul>
    <li>
      <label for="brightness">亮度(0-200):</label>
      <input id="brightness" max="200" min="0" step="1" type="range">
      <input id="brightness-val" class="val-box" type="number">
    </li>
    <li>
      <label for="contrast">對(duì)比度(0-200):</label>
      <input id="contrast" max="200" min="0" step="1" type="range">
      <input id="contrast-val" class="val-box" type="number">
    </li>
    <li>
      <label for="grayscale">灰度(0-100):</label>
      <input id="grayscale" max="100" min="0" step="1" type="range">
      <input id="grayscale-val" class="val-box" type="number">
    </li>
    <li>
      <label for="saturate">飽和度(0-200):</label>
      <input id="saturate" max="200" min="0" step="1" type="range">
      <input id="saturate-val" class="val-box" type="number">
    </li>
    <li>
      <label for="opacity">透明度(0-100):</label>
      <input id="opacity" max="100" min="0" step="1" type="range">
      <input id="opacity-val" class="val-box" type="number">
    </li>
    <li>
      <label for="invert">反相(0-100):</label>
      <input id="invert" max="100" min="0" step="1" type="range">
      <input id="invert-val" class="val-box" type="number">
    </li>
  </ul>
  <button id="reset">重置效果</button>
  <input id="file" type="file" accept="image/*">
  <p>
    <img id="img" src="" alt="">
  </p>
</body>
<script>
//選擇文件
function fileSelect() {
  let img = document.getElementById('img');
  document.getElementById('file').onchange = function() {
    var reader = new FileReader();
    reader.onload = function(e) {
      img.src = e.target.result;
    }
    reader.readAsDataURL(this.files[0]);
  }
}
//重置效果
function reset() {
  let reset_btn = document.getElementById('reset');
  let val_boxes = document.getElementsByClassName('val-box');
  let val_arr = Array.prototype.slice.call(val_boxes);
  let img = document.getElementById('img');

  reset_btn.addEventListener('click', function() {
    //所有的數(shù)據(jù)輸入重置為空
    val_arr.forEach(function(item) {
      item.value = "";
    });
    //去掉圖片的css屬性
    img.style.filter = "";
  })
}
//注冊(cè)過(guò)濾器
function filter(type) {
  //獲取濾鏡類型關(guān)聯(lián)的dom節(jié)點(diǎn)
  //綁定change事件
  //更改右側(cè)輸入框的顯示的值,以及更新濾鏡效果
  let ele = document.getElementById(type);
  let ele_val = document.getElementById(type + '-val');
  ele_val.addEventListener('keyup',function(e){
    if(e.keyCode == 13){
    ele.value = ele_val.value;
    setCss(type, ele_val.value);

    }
  })
  ele.addEventListener('change', function() {
    ele_val.value = ele.value;
    setCss(type, ele_val.value);
  });
}
//更新css屬性
function setCss(type, val) {
  let img = document.getElementById('img');
  //已經(jīng)存在某個(gè)濾鏡,更改濾鏡數(shù)值
  if (img.style.filter.indexOf(type) > -1) {
    let reg = new RegExp("(?<=" + type + ")" + "\\(.*\\)", "g")
    img.style.filter = img.style.filter.replace(reg, function(match) { return `(${val/100})` });
  } else {
    //直接添加新濾鏡
    img.style.filter += `${type}(${val/100})`
  }
}
window.onload = function() {
  //亮度
  filter('brightness');
  //對(duì)比度
  filter('contrast');
  //灰度
  filter('grayscale');
  //飽和度
  filter('saturate');
  //透明度
  filter('opacity');
  //反相  
  filter('invert');
  //注冊(cè)重置
  reset();
  //注冊(cè)文件選擇
  fileSelect();
}
</script>

</html>

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享JavaScript實(shí)現(xiàn)Ps濾鏡效果的方法內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!

標(biāo)題名稱:JavaScript實(shí)現(xiàn)Ps濾鏡效果的方法
當(dāng)前鏈接:http://aaarwkj.com/article38/gjohpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名微信公眾號(hào)、做網(wǎng)站小程序開發(fā)、域名注冊(cè)、

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
男人天堂av在线资源| 日本东京热免费一二三区| 91九色蝌蚪国产欧美亚洲| 国产黄色一区二区三区,| 国产欧美日韩精品av| 中国美女下面毛茸茸视频| 韩日av一区二区三区| 亚洲专区综合红桃av| 国产在线精品91国自产拍| 特别黄的日本免费视频| 亚洲国产日本一区自拍| 丝袜在线美腿视频网站| 亚洲香蕉一区二区免费| 熟女一区二区三区免费视频| 日本区一区二区三高清视频| av天堂资源在线播放| 国产丝袜美女一区二区| 亚洲av乱码一区二区三区观影| 国产一区欧美二区日韩三区| 中文字幕你懂的在线观看| 日本在线不卡二区三区| 欧美日韩一级一区二区三区| 麻豆av久久一区二区| 亚洲精品欧美激情专区| 天堂av一区二区在线播放| 关于男女性生活的视频| 亚洲熟女乱妇爽到高潮| 日本午夜熟女九色视频| 欧美日韩69av网| 韩国久久久久三级成人| 久久精品国产一区电影| 九九久久亚洲av成人乱片| 日本成人精品一区二区三区| 97乱碰视频在线观看| 国产熟女乱免费一区二区| 蜜臀在线免费观看黄片视频| 精品国产美女诱惑久久久| 国产三级无遮挡在线观看| 欧美精品一区二区精品久久| 欧美国产日韩一区在线观看| 中文字幕精品人妻在线|