canvas—像素操作
canvas 像素操作
参考:https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API/Tutorial/Pixel_manipulation_with_canvas
API介绍:
- ImageData 对象:
ImageData对象中存储着canvas对象真实的 像素数据,它包含以下几个只读属性:
- width:图片宽度,单位是像素。
- height:图片高度,单位是像素。
- data:Uint8ClampedArray类型的一维数组,包含着RGBA格式的整型数据,范围在0至255之间(包括255)
- 创建 ImageData 对象:
var myImageData = ctx.createImageData(width, height); // 创建了一个新的具体特定尺寸的ImageData对象。所有像素被预设为透明黑, rbga为(0,0,0,0) 。
- 获取画布上 某个区域的 ImageData 对象:
为了获得一个包含画布场景像素数据的ImageData对像,你可以用getImageData()方法var myImageData = ctx.getImageData(left, top, width, height);
- 在画布上写入 像素数据
你可以用putImageData()方法去对场景进行像素数据的写入。ctx.putImageData(myImageData, dx, dy); // dx,dy 就是写入画布的坐标位置
- 保存图片:
- toDataURL:默认设定。创建一个 PNG 图片。
也可以自定义 图片格式 和 图片质量,如var fullQuality = canvas.toDataURL("image/jpeg", 1.0); // data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ...9oADAMBAAIRAxEAPwD/AD/6AP/Z" var mediumQuality = canvas.toDataURL("image/jpeg", 0.5); var lowQuality = canvas.toDataURL("image/jpeg", 0.1);
- toBlob:这个创建了一个在画布中的代表图片的 Blob 对象。
const canvas = document.getElementById("canvas"); canvas.toBlob((blob) => { const newImg = document.createElement("img"); const url = URL.createObjectURL(blob); newImg.onload = () => { // 不再需要读取该 blob,因此释放该对象 URL.revokeObjectURL(url); }; newImg.src = url; document.body.appendChild(newImg); });
- toDataURL:默认设定。创建一个 PNG 图片。
实例代码:
const canvas = document.getElementById('canvas') const ctx = canvas.getContext('2d') ctx.beginPath() ctx.fillStyle = "red" ctx.fillRect(0,0,100,100) ctx.closePath() // 拷贝 画布中指定区域的像素数据。 const copy = ctx.getImageData(0,0,30,30) console.log(copy); // 将像素数据,写入到画布指定区域 ctx.putImageData(copy, 200,200)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异