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皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?

