JS区域滤镜

该文章展示了一个使用HTML5Canvas和JavaScript实现的简单图像处理示例,将图片中X坐标位于宽度1/3到2/3区域的像素点转换为灰度,而保持其他部分不变,创建出一种边缘灰度效果。
摘要由CSDN通过智能技术生成

思路

简单一点的,像素点X坐标小于图宽1/3和大于2/3的点变灰,中间的点不变。

复杂的暂时不会搞。

原图

处理后

<html>
<style>
#canvas { width:100%; }
</style>
<body>
<input id="file" type="file" accept="image/*"><br>
<canvas id="canvas"></canvas>
<script>
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var image = new Image;

document.getElementById('file').addEventListener('change',function(){ read(); }, false);

function read() {
	file = document.getElementById('file').files[0];
	var reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = function(e){
		image.src = reader.result;
		image.onload = function(e) {
			canvas.width = image.width;
			canvas.height = image.height;
			ctx.drawImage(image, 0, 0);
			filter();
		}
	};	
}

function filter() {
    var data = ctx.getImageData(0, 0, canvas.width, canvas.height).data;
    var imageData = ctx.createImageData(canvas.width, canvas.height);
	var data1 = imageData.data;
    for (i=0; i<data.length; i+=4) {
		var x = i / 4 % canvas.width;
        //var y = i / 4 / canvas.width;
        //十字
        //if ((x > canvas.width / 3 && x < canvas.width * 2/3) || (y > canvas.height / 3 && y < canvas.height * 2/3)) {
		if (x > canvas.width / 3 && x < canvas.width * 2/3) {
			data1[i] = data[i];
			data1[i+1] = data[i+1];
			data1[i+2] = data[i+2];
			data1[i+3] = data[i+3];
		} else {
			var gray = data[i] * 0.3 +  data[i+1] * 0.59 + data[i+2] * 0.11;
			data1[i] = gray;
			data1[i+1] = gray;
			data1[i+2] = gray;
			data1[i+3] = data[i+3];
		}
    }
    ctx.putImageData(imageData, 0, 0);
}
</script>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值