html5中如何使用canvas实现图片打码
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了html5中如何使用canvas实现图片打码的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇html5中如何使用canvas实现图片打码文章都会有所收获,
千家信息网最后更新 2026年11月03日html5中如何使用canvas实现图片打码
这篇文章主要介绍了html5中如何使用canvas实现图片打码的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇html5中如何使用canvas实现图片打码文章都会有所收获,下面我们一起来看看吧。
准备工作
demo 基于 vue + elelment-ui
首先创建一个html文件, 并引入 vue 和 elelment-ui(注意还有样式文件)
Document 接下来就可以写我们的打码功能啦
实现思路
创建canvas画布,并将要打码的图片绘制上去
监听鼠标在图片上的点击,移动、松开事件,在canvas画布上绘制要打码的区域
处理绘制的打码区域
保存打码后的图片
将要打码的图片绘制到canvas画布上
// 初始化 绘制图片toCode (currentImg) { this.$nextTick(() => { // 获取将要绘制的canvas的父元素节点 let parentId = document.getElementById('parentId') // 初始化图片 let drawImg = new Image() drawImg.setAttribute('crossOrigin', 'anonymous') drawImg.crossOrigin = 'Anonymous' drawImg.src = currentImg // 创建canvas元素并添加到父节点中 let addCanvas = document.createElement('canvas') parentId.appendChild(addCanvas) let canvas = parentId.lastElementChild canvas.id = 'imgCanvas' if (canvas.getContext) { let ctx = canvas.getContext('2d') // 绘制图片 drawImg.onload = function () { canvas.width = 720 canvas.height = 500 ctx.drawImage(drawImg, 0, 0, 720, 500) } } })}点击打码按钮,绘制打码区域
思路:
鼠标点击,获取点击时的坐标,每次点击前可能会存在打过码的区域,先清除画布,重新绘制图片
鼠标移动,开始绘制打码的矩形,通过移动的坐标和上面点击的点坐标确定绘制的矩形坐标和宽高
将绘制的打码矩形,分割成一个个宽高15像素的小正方形,并给每个小正方形生产随机颜色
鼠标松开,停止绘制矩形
// 打码dialogCode (img) { let parentId = document.getElementById('parentId') let canvas = document.getElementById('imgCanvas') if (canvas.getContext) { let ctx = canvas.getContext('2d') let drawImage = new Image() drawImage.crossOrigin = 'Anonymous' drawImage.src = img drawImage.onload = () => { ctx.drawImage(drawImage, 0, 0, 720, 500) } // 鼠标点击 parentId.onmousedown = e => { ctx.clearRect(0, 0, canvas.width, canvas.height) ctx.drawImage(drawImage, 0, 0, 720, 500) this.flag = true this.clickX = e.offsetX // 鼠标点击时的X this.clickY = e.offsetY // 鼠标点击时的Y } // 鼠标松开 parentId.onmouseup = () => { this.flag = false } // 鼠标按下 parentId.onmousemove = e => { if (this.flag) { ctx.clearRect(0, 0, canvas.width, canvas.height) ctx.drawImage(drawImage, 0, 0, 720, 500) ctx.beginPath() let pixels = [] // 二维数组,每个子数组有5个值(绘制矩形左上角的X坐标、y坐标,矩形的宽、高,生成的4位随机数用于颜色值) for (let x = 0; x < (e.offsetX - this.clickX) / 15; x++) { for (let y = 0; y < (e.offsetY - this.clickY) / 15; y++) { pixels.push([(x * 15 + this.clickX), (y * 15 + this.clickY), 15, 15, Math.floor(Math.random() * 9999)]) } for (let y = 0; y > (e.offsetY - this.clickY) / 15; y--) { pixels.push([(x * 15 + this.clickX), (y * 15 + this.clickY), 15, 15, Math.floor(Math.random() * 9999)]) } } for (let x = 0; x > (e.offsetX - this.clickX) / 15; x--) { for (let y = 0; y > (e.offsetY - this.clickY) / 15; y--) { pixels.push([(x * 15 + this.clickX), (y * 15 + this.clickY), 15, 15, Math.floor(Math.random() * 9999)]) } for (let y = 0; y < (e.offsetY - this.clickY) / 15; y++) { pixels.push([(x * 15 + this.clickX), (y * 15 + this.clickY), 15, 15, Math.floor(Math.random() * 9999)]) } } // 遍历数组绘制小正方形块 for (let i = 0; i < pixels.length; i++) { ctx.fillStyle = '#bf' + pixels[i][4] ctx.fillRect(pixels[i][0], pixels[i][1], pixels[i][2], pixels[i][3]) } ctx.fill() ctx.closePath() } } }}保存:
// 保存dialogUpload () { let canvas = document.getElementById('imgCanvas') let tempImg = canvas.toDataURL('image/png') let imgURL = document.getElementById('imgURL') imgURL.crossOrigin = 'Anonymous' imgURL.src = tempImg}源码
复制到html文件可预览:
使用canvas一步步实现图片打码功能 点击打码按钮,在图片上绘制打码区域; 点击保存,生成打码后的图片
保存后的图片
![]()
关于"html5中如何使用canvas实现图片打码"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"html5中如何使用canvas实现图片打码"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
图片
鼠标
矩形
坐标
区域
数组
画布
功能
文件
正方
正方形
知识
颜色
生成
移动
个子
元素
内容
左上角
思路
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广东万易互联网科技有限公司惠州分公司
广东猪兼强互联网科技有限公司
重生之互联网科技帝国
互联网科技巨头监管
互联网巨头反垄断金融科技
科技类互联网
中资互联网科技
科技服务与互联网
互联网科技媒体
成都互联网科技公司
互联网科技的未来发展
互联网科技生活的内容
玉溪互联网科技怎么选
河南住房之家互联网科技
威龙国际互联网科技公司
国大互联网教育科技有限公司薪资
众安科技工业互联网合作
智帮互联网科技公司最近动向
互联网大会出现的黑科技
科技发展第三阶段互联网时代
什么是科技互联网
科技创新与互联网经济
工业互联网科技新基建
杭州互联网科技公司
互联网科技咨询
科技赋能互联网健康
福州新华互联网科技学校 知乎
华夏恒生互联网科技013171
西安小鹰速贷互联网科技有限公司
科技互联网海报