JavaScript实现图像模糊化的方法实例

发布时间 - 2026-01-10 22:32:04    点击率:

前言

众所周知一幅完整的图像,是由红色、绿色、蓝色三个通道组成的。红色、绿色、蓝色三个通道的缩览图都是以灰度显示的。用不同的灰度色阶来表示" 红,绿,蓝"在图像中的比重。通道中的纯白,代表了该色光在此处为最高亮度,亮度级别是255。

模糊化方法:

就是将一个像素点的R(G,B)和它周围像素点的R(G,B)取出,然后取平均值再赋给这个像素点的R(G,B);这样就完成模糊化了;

例:

       1        2        3

       4        5        6

       7        8        9

       比如这个像素点5,把5像素点和周围的8个像素点(1,2,3,4,6,7,8,9)的R(G,B)取出,取这9个点的平均值然后赋给5像素点

       R(5) = (R1+R2+R3+R4+R5+R6+R7+R8+R9)/9;

       G(5) = (G1+G2+G3+G4+G5+G6+G7+G8+G9)/9;

       B(5) = (B1+B2+B3+B4+B5+B6+B7+B8+B9)/9;

效果图:

实例代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>ImgBase</title>
		<style type="text/css">
			.scream{
				width:400px;
				height:300px;
				position: absolute;
				top:60px;
				border: 1px solid;
			}
			#canvas{
				position: absolute;
				top:60px;
				left:500px;
				border: 1px dashed;
			}
		</style>
	</head>
	<body>
		<input type="file" onchange="loadImg()"/>
		<input type="button" value="模糊化" onclick="Fuzzy()"/>
		<br/><br/>
		<div class="scream">
			<img id="scream" width="400px" height="300px" alt="Image preview...">
		</div>
		<canvas id="canvas" width="400px;" height="300px;">
			your browser does not support canvas!
		</canvas>
		
		<script>
			function Fuzzy(){
				var c=document.getElementById("canvas");
			 var ctx=c.getContext("2d");
			 var imgData=ctx.getImageData(0,0,c.width,c.height);
			 var img_w = imgData.width;
			 var img_h = imgData.height;
			 
			 for(var w=1;w<(img_w-1);w++){
			 	for(var h=1;h<(img_h-1);h++){
			 		//起始点
			 		var i = (w+img_w*h)*4;
			 		var R = imgData.data[i-1604]+imgData.data[i-1600]+imgData.data[i-1596]+imgData.data[i-4]+imgData.data[i]
			 		+imgData.data[i+4]+imgData.data[i+1596]+imgData.data[i+1600]+imgData.data[i+1604];	//R(0-255)
				 	var G = imgData.data[i-1603]+imgData.data[i-1599]+imgData.data[i-1595]+imgData.data[i-3]+imgData.data[i+1]
			 		+imgData.data[i+5]+imgData.data[i+1597]+imgData.data[i+1601]+imgData.data[i+1605];	//G(0-255)
				 	var B = imgData.data[i-1602]+imgData.data[i-1598]+imgData.data[i-1594]+imgData.data[i-2]+imgData.data[i+2]
			 		+imgData.data[i+6]+imgData.data[i+1598]+imgData.data[i+1602]+imgData.data[i+1606];;	//G(0-255)
				 	var Alpha = imgData.data[i+3];	//Alpha(0-255)
		 	
				 	imgData.data[i] = R/9;
				  imgData.data[i+1] = G/9;	
				  imgData.data[i+2] = B/9;	
				  imgData.data[i+3] = Alpha;	
			 	}
			 }
			 ctx.putImageData(imgData,0,0);
			}
		</script>
		<script>
			//canvas图像的宽高 
			var c_w = 400; var c_h = 300;
			//加载img图像
			function loadImg(){
				var img = document.getElementById("scream");
				var file = document.querySelector('input[type=file]').files[0];
				if(!/image\/\w+/.test(file.type)){
			  alert("文件必须为图片!");
			  return false;
			 }
				var reader = new FileReader();
				reader.addEventListener("load", function () {
				 img.src = reader.result;
				}, false);
				
				if(file) {
					reader.readAsDataURL(file);
					loadCanvas();
				}
			}
			//加载canvas图像
			function loadCanvas(){
				var c=document.getElementById("canvas");
				var ctx=c.getContext("2d");
				
				var img = document.getElementById("scream");
				img.onload = function() {
					ctx.drawImage(img,0,0,c_w,c_h);
				} 
			}
		</script>
	</body>
</html>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


# js图片模糊处理  # js实现图片模糊效果  # js  # 图片高斯模糊  # JavaScript图像放大镜效果实现方法详解  # JavaScript如何使用插值实现图像渐变  # Javascript基础_嵌入图像的简单实现  # JavaScript图像延迟加载库Echo.js  # javascript实现图像循环明暗变化的方法  # JS预览图像将本地图片显示到浏览器上  # javascript图像处理—仿射变换深度理解  # Javascript图像处理—图像形态学(膨胀与腐蚀)  # Javascript图像处理—为矩阵添加常用方法  # 10大Js图像处理库  # 加载  # 是由  # 一幅  # 这篇文章  # 众所周知  # 道中  # 均值  # 起始点  # 有疑问  # DOCTYPE  # lt  # xhtml  # meta  # gt  # html  # head  # text  # align  # style  # class 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  详解jQuery停止动画——stop()方法的使用  黑客如何通过漏洞一步步攻陷网站服务器?  如何快速查询网站的真实建站时间?  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  Python文件流缓冲机制_IO性能解析【教程】  如何在IIS中新建站点并配置端口与物理路径?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  黑客入侵网站服务器的常见手法有哪些?  Laravel安装步骤详细教程_Laravel环境搭建指南  Android 常见的图片加载框架详细介绍  三星、SK海力士获美批准:可向中国出口芯片制造设备  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  网站制作软件有哪些,制图软件有哪些?  如何用AI帮你把自己的生活经历写成一个有趣的故事?  Android自定义控件实现温度旋转按钮效果  微信小程序制作网站有哪些,微信小程序需要做网站吗?  如何在不使用负向后查找的情况下匹配特定条件前的换行符  七夕网站制作视频,七夕大促活动怎么报名?  JavaScript如何实现错误处理_try...catch如何捕获异常?  装修招标网站设计制作流程,装修招标流程?  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  微信公众帐号开发教程之图文消息全攻略  js实现点击每个li节点,都弹出其文本值及修改  北京专业网站制作设计师招聘,北京白云观官方网站?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  如何在云虚拟主机上快速搭建个人网站?  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  Laravel如何实现一对一模型关联?(Eloquent示例)  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  PHP 500报错的快速解决方法  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  南京网站制作费用,南京远驱官方网站?  北京的网站制作公司有哪些,哪个视频网站最好?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  Laravel如何使用Collections进行数据处理?(实用方法示例)  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  javascript中闭包概念与用法深入理解  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  进行网站优化必须要坚持的四大原则  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  米侠浏览器网页背景异常怎么办 米侠显示修复  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?