本身學習了一下canvas濾鏡javascript
編寫一個簡單的小界面,嘿嘿!css
註釋都在裏面啦啦啦,感興趣的來瞅瞅哦😯html
<!DOCTYPE html>java
<html> canvas
<head>數組
<meta charset="UTF-8">學習
<title></title>spa
<style type="text/css">htm
#wrap {對象
width: 600px;
height: 600px;
background-color: #EEEEEE;
}
#sourceDiv {
float: left;
border: 2px solid blue;
}
#canvasDiv {
float: right;
border: 2px solid red;
}
</style>
</head>
<body>
<!--最大的wrap-->
<div id="wrap">
<div id="sourceDiv">
<!--圖片-->
<img id="img" src="img/bg6.jpg" />
</div>
<!--畫布-->
<div id="canvasDiv">
<canvas id="canvas"></canvas>
</div>
</div>
<button type="button" id="btn">試一試</button>
</body>
<script type="text/javascript">
window.onload = function() {
var img = document.getElementById("img");
var canvas = document.getElementById("canvas");
var btn = document.getElementById("btn");
canvas.width = img.clientWidth;
canvas.height = img.clientHeight;
pen = canvas.getContext("2d");
pen.drawImage(img, 0, 0, canvas.width, canvas.height); //把圖片放在畫布上
}
//getImageData(x,y,width,height) 複製畫布上指定矩形的像素數據 而後經過putImageData()將圖像數據放回畫布:
//返回ImageData對象,該對象拷貝了畫布指定矩形的像素數據
//對於 ImageData 對象中的每一個像素,都存在着四方面的信息rgba,
//color/alpha 信息以數組形式存在,並存儲於 ImageData 對象的 data 屬性中
//即 RGBA 值 eg:red=ImageData.data[0];
btn.onclick = function() {
var imgData = pen.getImageData(0, 0, canvas.width, canvas.height);
var len = canvas.width * canvas.height * 4;
//遍歷imgData.data改變像素值
for(var i = 0; i < imgData.data.length; i += 4) {
//每個像素的color/alpha 信息
//取反色
imgData.data[i] = 255 - imgData.data[i];
imgData.data[i + 1] = 255 - imgData.data[i + 1];
imgData.data[i + 2] = 255 - imgData.data[i + 2];
imgData.data[i + 3] = 255;
}
// 將圖像數據imgData放回畫布
//putImageData(imgData,x,y,dirtyX,dirtyY,dirtyWidth,dirtyHeight);
//在畫布上的位置x y 在畫布上放置圖像的位置水平位置偏移量 垂直位置偏移量 圖像寬度
pen.putImageData(imgData, 0, 0);
}
</script>
</html>