【无标题】canva做出一个按钮实现的图片滤镜效果,过于简单就不写注释了

<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8" />
	<title></title>
</head>

<body>
	<canvas id="canvas" width=410 height=400 style="border: 1px solid blue;margin:0 auto;display:block"></canvas>
	<br>
	<div style="text-align: center;">
		<button id="red" onclick="changered()">点我变红</button>
		<button id="red" onclick="changegray()">点我变灰</button>
		<button id="red" onclick="light()">点我变亮</button>
		<button id="red" onclick="black()">点我暗</button>
		<button id="red" onclick="old()">点我变复古</button>
		<button id="red" onclick="deepred()">点我变暗红</button>
		<button id="red" onclick="deepgreen()">点我变深绿</button>
		<button id="red" onclick="deepblue()">点我变深蓝色</button>
	</div>
</body>
<script>
	function $$(id) {
		return document.getElementById(id)
	}
	var canvas = $$('canvas')
	var cxt = canvas.getContext('2d')
	var img = new Image();
	img.src = "./princess.png"

	img.onload = function () {

		cxt.drawImage(img, 10, 10);
	}
	function changered() {
		var imgdata = cxt.getImageData(10, 10, 120, 120);
		var data = imgdata.data
		for (var i = 0; i < data.length; i += 4) {
			data[i + 0] = 255 - data[i + 0]
			data[i + 1] = 255 - data[i + 1]
			data[i + 2] = 255 - data[i + 2]
		}
		cxt.putImageData(imgdata, 140, 10);

	}
	function changegray() {
		imgdata = cxt.getImageData(10, 10, 120, 120);
		data = imgdata.data
		for (var i = 0; i < data.length; i += 4) {
			var avg = data[i + 0] * 0.3 + data[i + 1] * 0.6 + data[i + 2] * 0.1
			data[i + 0] = avg
			data[i + 1] = avg
			data[i + 2] = avg
		}
		cxt.putImageData(imgdata, 270, 10);
	}

	function light() {
		imgdata = cxt.getImageData(10, 10, 120, 120);
		data = imgdata.data
		for (var i = 0; i < data.length; i += 4) {
			var a = 50
			data[i + 0] += a
			data[i + 1] += a
			data[i + 2] += a
		}
		cxt.putImageData(imgdata, 10, 140);
	}

	function black() {
		var imgdata = cxt.getImageData(10, 10, 120, 120);
		var data = imgdata.data
		for (var i = 0; i < data.length; i += 4) {
			var a = -100
			data[i + 0] += a
			data[i + 1] += a
			data[i + 2] += a
		}
		cxt.putImageData(imgdata, 140, 140);
	}
	function old() {
		imgdata = cxt.getImageData(10, 10, 120, 120);
		data = imgdata.data
		for (var i = 0; i < data.length; i += 4) {
			r = data[i + 0]
			g = data[i + 1]
			b = data[i + 2]
			data[i + 0] = r * 0.39 + g * 0.76 + b * 0.18
			data[i + 1] = r * 0.35 + g * 0.68 + b * 0.16
			data[i + 2] = r * 0.27 + g * 0.53 + b * 0.13
		}
		cxt.putImageData(imgdata, 270, 140);

	}
	function deepred() {
		imgdata = cxt.getImageData(10, 10, 120, 120);
		data = imgdata.data
		for (var i = 0; i < data.length; i += 4) {
			r = data[i + 0]
			g = data[i + 1]
			b = data[i + 2]
			var avg = (r + g + b) / 3
			data[i + 0] = avg
			data[i + 1] = 0
			data[i + 2] = 0
		}
		cxt.putImageData(imgdata, 10, 270);
	}
	function deepgreen() {
		imgdata = cxt.getImageData(10, 10, 120, 120);
		data = imgdata.data
		for (var i = 0; i < data.length; i += 4) {
			r = data[i + 0]
			g = data[i + 1]
			b = data[i + 2]
			var avg = (r + g + b) / 3
			data[i + 0] = 0
			data[i + 1] = avg
			data[i + 2] = 0
		}
		cxt.putImageData(imgdata, 140, 270);
	}
	function deepblue() {
		imgdata = cxt.getImageData(10, 10, 120, 120);
		data = imgdata.data
		for (var i = 0; i < data.length; i += 4) {
			r = data[i + 0]
			g = data[i + 1]
			b = data[i + 2]
			var avg = (r + g + b) / 3
			data[i + 0] = 0
			data[i + 1] = 0
			data[i + 2] = avg
		}
		cxt.putImageData(imgdata, 270, 270);
	}

</script>

</html>

图片素材

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值