新闻中心
J*aScript图像处理_CanvasAPI实战
Canvas API 可实现网页图片动态处理,先通过 drawImage 绘制图像,再用 getImageData 操作像素实现灰度、滤镜等效果,最后用 toDataURL 导出图像,适用于头像上传、截图等场景。

想在网页上动态处理图片?Canvas API 是你的最佳选择。它不仅能绘制图形,还能对图像进行实时滤镜、裁剪、缩放等操作。掌握 Canvas 图像处理,能让你的前端项目更具交互性和视觉表现力。
Canvas 基础:加载并绘制图像
要处理图像,先得把它画到 canvas 上。使用 drawImage() 方法可以将图片绘制到画布中。
基本步骤:
- 创建 Image 对象并设置 src
- 等待图片加载完成(onload)
- 获取 canvas 上下文,并用 drawImage 绘制
示例代码:
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
const img = new Image();
img.src = 'photo.jpg';
img.onload = function() {
canvas.width = img.width;
canvas.height = img.height;
ctx.drawImage(img, 0, 0);
}
获取并操作像素数据
图像处理的核心是操作像素。Canvas 提供了 getImageData() 和 putImageData() 方法来读取和写入像素信息。
ImageData 包含一个 data 数组,每个像素由 4 个值表示:红、绿、蓝、透明度(RGBA),范围是 0–255。
常见操作:
- 灰度化:将 RGB 取平均值赋给三个通道
- 反色:用 255 减去原值
- 亮度调整:给每个颜色值加减一个数
灰度处理示例:
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
const data = imageData.data;
<p>for (let i = 0; i < data.length; i += 4) {
const *g = (data[i] + data[i+1] + data[i+2]) / 2;
data[i] = *g; // 红
data[i+1] = *g; // 绿
data[i+2] = *g; // 蓝
}</p><p>ctx.putImageData(imageData, 0, 0);</p>
<div class="aritcle_card">
<a class="aritcle_card_img" href="/xiazai/shouce/1610">
<img src="https://img.php.cn/upload/manual/000/000/005/170556306161620.gif" alt="Delphi 7应用编程150例 全书内容 CHM版">
</a>
<div class="aritcle_card_info">
<a href="/xiazai/shouce/1610">Delphi 7应用编程150例 全书内容 CHM版</a>
<p>Delphi 7应用编程150例 CHM全书内容下载,全书主要通过150个实例,全面、深入地介绍了用Delphi 7开发应用程序的常用方法和技巧,主要讲解了用Delphi 7进行界面效果处理、图像处理、图形与多媒体开发、系统功能控制、文件处理、网络与数据库开发,以及组件应用等内容。这些实例简单实用、典型性强、功能突出,很多实例使用的技术稍加扩展可以解决同类问题。使用本书最好的方法是通过学习掌握实例中的技术或技巧,然后使用这些技术尝试实现更复杂的功能并应用到更多方面。本书主要针对具有一定Delphi基础知识</p>
<div class="">
<img src="/static/images/card_xiazai.png" alt="Delphi 7应用编程150例 全书内容 CH
M版">
<span>1</span>
</div>
</div>
<a href="/xiazai/shouce/1610" class="aritcle_card_btn">
<span>查看详情</span>
<img src="/static/images/cardxiayige-3.png" alt="Delphi 7应用编程150例 全书内容 CHM版">
</a>
</div>
实现简单滤镜效果
基于像素操作,可以轻松实现常见滤镜。
比如,添加一个褐色滤镜(复古风):
for (let i = 0; i < data.length; i += 4) {
const r = data[i];
const g = data[i+1];
const b = data[i+2];
<p>data[i] = (r <em> 0.393) + (g </em> 0.769) + (b <em> 0.189); // 新红
data[i+1] = (r </em> 0.349) + (g <em> 0.686) + (b </em> 0.168); // 新绿
data[i+2] = (r <em> 0.272) + (g </em> 0.534) + (b * 0.131); // 新蓝
}</p>注意:处理后的值要限制在 0–255 范围内,避免溢出。
导出处理后的图像
处理完图像后,可以用 canvas 的 toDataURL() 方法导出为 base64 图片,或用 toBlob() 获取二进制数据用于上传。
导出为 PNG 示例:
const url = canvas.toDataURL('image/png');
document.getElementById('output').src = url;
适合用于头像上传、截图、生成分享图等场景。
基本上就这些。Canvas 图像处理不复杂但容易忽略细节,比如异步加载、尺寸同步、像素边界处理。多练几次,你也能做出自己的“美颜”功能。
以上就是J*aScript图像处理_CanvasAPI实战的详细内容,更多请关注其它相关文章!
# 如何用
# 蓟县seo优化服务热线
# 网站需要怎么优化
# 昌吉全网营销推广
# 自考网站建设论文模板
# 抖音网站版推广
# 互联网网站推广哪家有名
# 峨眉山网站推广外包服务
# 京东seo是什么呢
# 膏药怎么推广营销
# 赣州一站式营销推广中心
# 按需
# 自己的
# javascript
# 管理器
# 上传
# 本书
# 如何使用
# 加载
# 图像处理
# 滤镜
# canva
# 异步加载
# 前端
# java
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
写好的html代码怎么运行出来_运行写好的html代码方法【教程】
Excel组合图表怎么做 Excel创建柱状图与折线组合图教程【图表】
MAC如何安全彻底地删除文件_MAC使用终端命令确保文件无法被恢复
Tabulator表格日期时间排序问题及自定义解决方案
c++如何使用Meson构建系统_c++比CMake更快的构建工具
C++如何实现异步操作_C++11使用std::future和std::async进行异步编程
QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台
微信群消息显示延迟如何解决 微信群消息刷新优化方法
Angular中父组件异步更新子组件复选框状态的实践指南
CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠
CSS响应式网页如何实现主次模块比例自适应_flex-grow与flex-shrink调整
学习通网页版官方登录 超星学习通电脑端入口指南
PHP表单数据传递:如何通过隐藏输入字段获取动态ID
怎么在浏览器上运行HTML文件_浏览器运行HTML文件技巧【技巧】
J*aScript Promise链中如何正确终止后续.then执行并处理错误
poki免费入口快捷访问 poki人气小游戏直接玩站点
理解Python模块与全局变量的作用域管理
C++如何实现单例模式_C++设计模式之线程安全的单例写法
Win11怎么关闭触摸屏_Windows 11禁用HID符合标准触摸屏
c++中为什么推荐使用using替代typedef_c++现代化类型别名
J*a递归快速排序中静态变量导致数据累积的陷阱与解决方案
Win11 USB传输速度慢怎么解决 Win11 USB驱动更新与设置
Sublime Text怎么设置垂直标尺_Sublime配置Rulers规范代码长度
html5 app怎么运行环境_配html5 app运行环境【教程】
Golang如何实现状态模式管理对象状态_Golang State模式实现技巧
如何提高微信支付的安全性_微信支付安全防护与设置建议
深入理解字体排版:Adobe光学字偶距与CSS字偶距的差异与实现
qq邮箱发邮件给国外发不出去_QQ邮箱国际邮件发送失败原因与解决
qq浏览器如何查看和导出已保存的密码 qq浏览器密码管理器数据备份教程
Kafka Streams中基于消息头条件过滤消息的实现指南
c++中的std::launder有什么实际用途_c++对象生命周期与指针优化
海量存储:机器视觉智能化的核心基石
QQ邮箱网页版登录入口 QQ邮箱官方在线使用平台
php源码怎么在电脑上测试_电脑测试php源码方法步骤【教程】
J*aScript DOM操作:高效清空列表元素的策略与实践
Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】
魅族17怎样用浏览器译外语网页_iPhone魅族17浏览器译外语网页【即时翻译】
KFC游戏互动怎么赢取优惠券_KFC线上游戏活动参与与优惠代码赢取教程
mc.js游戏直达 mc.js网页免下载版本秒进地址
PyTorch模型训练准确率不提升:诊断与修复常见指标计算错误
Python字典中优雅地迭代剩余元素的方法
一加 Nord 5 隐私权限异常_一加 Nord 5 系统安全优化
如何高效处理PHP中的Excel数据导入导出?PortPHP/Spreadsheet助你轻松搞定!
微博网页版主页入口 微博官方网站免登录访问
React/Next.js中实现列表项的动态移动与状态管理:兼论唯一键的重要性
Flexbox布局实践:实现粘性导航栏与底部固定页脚
Yandex免登录官网入口_俄罗斯Yandex搜索引擎直达链接
Android Studio计算器C键逻辑错误排查与修复:条件判断优化指南
CSS实现侧边栏导航项全宽圆角悬停背景效果
小红书网页版入口链接分享 小红书官网直接进


2025-11-25
浏览次数:次
返回列表
M版">
<span>1</span>
</div>
</div>
<a href="/xiazai/shouce/1610" class="aritcle_card_btn">
<span>查看详情</span>
<img src="/static/images/cardxiayige-3.png" alt="Delphi 7应用编程150例 全书内容 CHM版">
</a>
</div>