<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>图片打码</title><style>canvas {border: 1px solid red;}</style>
</head><body><canvas width="820" height="500" id="canvas"></canvas><script>window.onload = function () {let canvas = document.querySelector('#canvas');if (!canvas.getContext) return;let ctx = canvas.getContext('2d');let image = new Image();image.src = "dilireba.jpg";image.onload = function () {// 设置画布的宽度和高度canvas.width = image.width * 2;canvas.height = image.height;ctx.drawImage(image, 0, 0); // 把图片绘制到画布上// 获取原来图片的像素数据let oldImageData = ctx.getImageData(0, 0, image.width, image.height);// 创建一个新的像素数据let newImageData = ctx.createImageData(image.width, image.height);// 自己定义一个块的容量,把N个像素作为一个单位// 把图片分块 每一块的size设置为5(自己随便定义的)let size = 2;for (let i = 0; i < oldImageData.width / size; i++) {for (let j = 0; j < oldImageData.height / size; j++) {// 从每一块中随机取出一个像素点的颜色let x = Math.floor(Math.random() * size);let y = Math.floor(Math.random() * size);let color = getPxColor(oldImageData, i * size + x, j * size + y);// 把这个像素点的颜色给这一小块全部铺满for (let m = 0; m < size; m++) {for (let n = 0; n < size; n++) {setPxColor(newImageData, i * size + m, j * size + n, color);}}}}ctx.putImageData(newImageData, image.width, 0);}// 设置指定坐标位置像素的值function setPxColor(imageData, x, y, color) {imageData.data[(y * imageData.width + x) * 4] = color[0];imageData.data[(y * imageData.width + x) * 4 + 1] = color[1];imageData.data[(y * imageData.width + x) * 4 + 2] = color[2];imageData.data[(y * imageData.width + x) * 4 + 3] = color[3];}function getPxColor(imageData, x, y) {let color = [];// 有多宽,就是一排有多少个像素点let width = imageData.width;for (let i = 0; i < imageData.data.length; i++) {color[0] = imageData.data[(y * width + x) * 4];color[1] = imageData.data[(y * width + x) * 4 + 1];color[2] = imageData.data[(y * width + x) * 4 + 2];color[3] = imageData.data[(y * width + x) * 4 + 3];}return color;}}</script>
</body></html>

利用canvas给图片打马赛克相关推荐

  1. php图片素描化,html5利用canvas实现图片转素描效果

    本章给大家介绍html5如何利用canvas实现图片转素描效果.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 素描滤镜原理: 最基础的算法就是: 1.去色:(去色公式:gray = ...

  2. 利用canvas下载图片,透明区默认变为黑色

    问题:利用canvas下载图片,透明区默认变为黑色 HTML <canvas id="canvas"></canvas> <div style=&qu ...

  3. 手把手教你利用js给图片打马赛克

    文章目录 效果演示 Canvas简介 知识点简介 step-by-step 完整代码 效果演示 Canvas简介 这个 HTML 元素是为了客户端矢量图形而设计的.它自己没有行为,但却把一个绘图 AP ...

  4. JS使用canvas给图片打马赛克

    简介 利用canvas加载图片后,画布上的各像素的颜色(r,g,b)值来填充色块,达到马赛克效果. 效果图 代码 html <canvas id="canvas" data- ...

  5. js 利用canvas转换图片格式并下载图片

    1.利用canvas转换格式 思路很简单,就是在canvas上drawImage,然后再把canvas转换成想要的图片格式 convertImageToCanvas = (image) => { ...

  6. 利用js结合canvas给图片打马赛克

    效果演示 什么是canvas? <canvas> 元素用于图形的绘制,只是图形容器. 元素本身并没有绘制能力,您必须使用js脚本来绘制图形. getContext() 方法可返回一个对象, ...

  7. 利用canvas给图片添加水印

    前言 前两天给个人网站添加了一个小功能,就是在文章编辑上传图片的时候自动给图片加上水印.给网页图片添加水印是个常见的功能,也是互联网内容作者保护自己版权的方法之一.本文简单记录一下借助canvas在前 ...

  8. JS利用Canvas实现图片等比例裁剪、压缩

    最近在做一个政务类的移动端H5项目,用户体量达百万级别,有一个模块中有上传图片反馈的功能,由于各个手机产商拍照的像素值的都不一样,后台去浏览这个图片的时候就出现大小不一的情况,另外有些图片并不需要上传 ...

  9. 利用canvas绘制图片加水印

    wxml <view class="container"><button bindtap="chooseImages">选择图片< ...

最新文章

  1. -heap 查看当前jvm堆栈信息_必知必会的JVM工具系列二,读懂会用jhat,jstack,jstatd,JConsole...
  2. Realm Configuration HOW-TO--官方
  3. 温故知新:Docker基础知识知多少?
  4. Javascript中的事件冒泡
  5. TCP/IP 免费ARP
  6. 利用VS2012自带功能,将xml文档反序列化为对象
  7. SharePoint2007安装图文详解四:安装.NET Framework 3.0和SharePoint 2007
  8. 【03】创建型-原型模式
  9. 对象复制语意学(Object Copy Semantics)
  10. WIN7安装IIS后无默认网站(Default Web site)解决方案
  11. ADKAR模型简介(转)
  12. vue 动态的获取屏幕高度
  13. 使用Cmd设置 静态/动态IP
  14. Python交流QQ群
  15. linux内核mtd驱动程序与sd卡驱动程序,Linux内核MTD驱动程序与SD卡驱动程序.docx
  16. ESP8266 NodeMCU:ESP-NOW Web 服务器传感器仪表板(ESP-NOW + Wi-Fi)
  17. Zabbix(一):server,agent端 安装配置及主机,监控项,触发器,动作,媒介配置步骤...
  18. 收藏|Java程序员必看的几本基础书籍和常用工具
  19. 【10道大厂必考性能优化题】陶辉老师
  20. 搜索引擎最新算法大全|更新到2020.2.28日(百度算法大全、360算法大全)

热门文章

  1. Access2003开发者扩展工具集概述(转)
  2. 安卓SharePreferences数据存储
  3. 【论文笔记】SOTR: Segmenting Objects with Transformers
  4. 网络游戏需要辅助性外挂?
  5. python123测验9答案_python123 测验9: Python计算生态纵览 (第9周)
  6. Matlab,solve函数出错,问题的解决
  7. viper4android 音效,ViPer4android. FX顶级音效!
  8. 约当消去法求解方程组
  9. 苹果手机怎么定位安卓手机_苹果手机和安卓手机不同使用感受
  10. 将数字转换成中文金额的大写形式