純JavaScript實現(xiàn)HTML5 Canvas 6種特效濾鏡
(給前端大學加星標,提升前端技能.)
小試牛刀,實現(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對象來源:?
https://www.kancloud.cn/digest/canvas-programming/154008
2、如何添加一個DOM img對象到Canvas對象中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 imagetempContext = canvas.getContext("2d");
3、如何從Canvas對象中獲取預定數(shù)據(jù)var source = document.getElementById("source");tempContext.drawImage(source, 0, 0, canvas.width,canvas.height);
4、如何對DOM對象實現(xiàn)鼠標ClickEvent綁定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;
5、如何調(diào)用實現(xiàn)的gfilter API完成濾鏡功能function bindButtonEvent(element, type, handler){if(element.addEventListener){element.addEventListener(type, handler,**false**);}else{element.attachEvent('on'+type, handler);// for IE6,7,8}}
6、瀏覽器支持:IE,F(xiàn)F,Chrome上測試通過,其中IE上支持通過以下標簽實現(xiàn)://導入API文件gfilter.colorInvertProcess(binaryData, len); //調(diào)用 API
應用程序源代碼:CSS部分:filter1.html中HTML源代碼:#svgContainer {width:800px;height:600px;background-color:#EEEEEE;}#sourceDiv { float: left; border: 2px solid blue}#targetDiv { float: right;border: 2px solid red}
Canvas Filter Demo 欧美7777| www.夜夜嗨 | 免费无码做爱视频 | 91人妻人人澡人人爽人人 | 欧美,国产特级黄片 |
