<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          純JavaScript實現(xiàn)HTML5 Canvas 6種特效濾鏡

          共 11231字,需瀏覽 23分鐘

           ·

          2020-07-10 00:12

          (給前端大學加星標,提升前端技能.

          來源:?

          https://www.kancloud.cn/digest/canvas-programming/154008

          小試牛刀,實現(xiàn)了六款簡單常見HTML5 Canvas特效濾鏡,并且封裝成一個純JavaScript可調(diào)用的API文件gloomyfishfilter.js。支持的特效濾鏡分別為:1.反色2.灰色調(diào)3.模糊4.浮雕5.雕刻6.合理濾鏡原理解釋:2.灰色調(diào):獲取一個預期點RGB值r,g,b則新的RGB值newr =(r * 0.272)+(g * 0.534)+(b * 0.131);newg =(r * 0.349)+(g * 0.686)+(b * 0.168);newb =(r * 0.393)+(g * 0.769)+(b * 0.189);3.模糊:基于一個5 * 5的卷積核4.浮雕與雕刻:根據(jù)當前預期的前一個預期RGB值與它的后一個重新的RGB值之差再加上1285.總體:模擬了物體在鏡子中與之對應的效果。雜項準備1、如何獲取Canvas 2d context對象
          var canvas = document.getElementById("target");
          canvas.width = source.clientWidth;
          canvas.height = source.clientHeight;
          **if**(!canvas.getContext) {
          console.log("Canvas not supported. Please install a HTML5compatible browser.");
          **return**;
          }
          // get 2D context of canvas and draw image
          tempContext = canvas.getContext("2d");
          2、如何添加一個DOM img對象到Canvas對象中
          var source = document.getElementById("source");
          tempContext.drawImage(source, 0, 0, canvas.width,canvas.height);
          3、如何從Canvas對象中獲取預定數(shù)據(jù)
          var canvas = document.getElementById("target");
          var len = canvas.width * canvas.height * 4;
          var canvasData = tempContext.getImageData(0, 0, canvas.width, canvas.height);
          var binaryData = canvasData.data;
          4、如何對DOM對象實現(xiàn)鼠標ClickEvent綁定
          function bindButtonEvent(element, type, handler) {  
          if(element.addEventListener){
          element.addEventListener(type, handler,**false**);
          }else{
          element.attachEvent('on'+type, handler);// for IE6,7,8
          }
          }
          5、如何調(diào)用實現(xiàn)的gfilter API完成濾鏡功能
           //導入API文件
          gfilter.colorInvertProcess(binaryData, len); //調(diào)用 API
          6、瀏覽器支持:IE,F(xiàn)F,Chrome上測試通過,其中IE上支持通過以下標簽實現(xiàn):


          效果演示:46529b782d098ad6411f66958766afc0.webp應用程序源代碼:CSS部分:
          #svgContainer {  width:800px;  height:600px;  background-color:#EEEEEE;}
          #sourceDiv { float: left; border: 2px solid blue} #targetDiv { float: right;border: 2px solid red}
          filter1.html中HTML源代碼:
          Canvas Filter Demo
          
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                    <th id="afajh"><progress id="afajh"></progress></th>
                    欧美7777| www.夜夜嗨 | 免费无码做爱视频 | 91人妻人人澡人人爽人人 | 欧美,国产特级黄片 |