HTML5自学笔记[ 21 ]canvas绘图实例之马赛克
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>马赛克</title> <style> body{background:#000;} canvas{background: #fff; margin-left:500px;} </style> <script> window.onload = function(){ var cvs = document.getElementById('canvas1'); var cxt = cvs.getContext('2d'); var oImg = new Image(); oImg.src = '1.jpg'; oImg.onload = function(){ cxt.drawImage(this,0,0); var imgData = cxt.getImageData(0,0,oImg.width,oImg.height); var newImgData = cxt.createImageData(oImg.width,oImg.height); var num = 10;//该参数指定马赛克格子的大小 var stepW = oImg.width/num;//一行内格子数 var stepH = oImg.height/num;//一列内格子数 for(var j=0;j<stepH;j++){ for(var i=0;i<stepW;i++){ //获取10*10方格内随机的一个颜色 var colors = getXY(imgData,i*num+Math.floor(Math.random()*num),j*num+Math.floor(Math.random()*num)); //让10*10方格的颜色都为随机色 for(var s=0;s<num;s++){ for(var t=0;t<num;t++){ setXY(newImgData,i*num+t,j*num+s,colors); } } } } cxt.putImageData(newImgData,0,oImg.height+50); } } function getXY(imgData,x,y){ var result = []; result.push(imgData.data[(imgData.width*y+x)*4]); result.push(imgData.data[(imgData.width*y+x)*4+1]); result.push(imgData.data[(imgData.width*y+x)*4+2]); result.push(imgData.data[(imgData.width*y+x)*4+3]); return result; } function setXY(imgData,x,y,colors){ imgData.data[(imgData.width*y+x)*4] = colors[0]; imgData.data[(imgData.width*y+x)*4+1] = colors[1]; imgData.data[(imgData.width*y+x)*4+2] = colors[2]; imgData.data[(imgData.width*y+x)*4+3] = colors[3]; } </script> </head> <body> <canvas id="canvas1" width="500" height="500"></canvas> </body> </html>
HTML5自学笔记[ 21 ]canvas绘图实例之马赛克的更多相关文章
- HTML5自学笔记[ 15 ]canvas绘图实例之钟表
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- HTML5自学笔记[ 19 ]canvas绘图实例之炫彩时钟
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- HTML5自学笔记[ 20 ]canvas绘图实例之绘制倒影
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- HTML5自学笔记[ 13 ]canvas绘图小实例之方块移动
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- HTML5自学笔记[ 12 ]canvas绘图小示例之鼠标画线
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- HTML5自学笔记[ 11 ]canvas绘图基础1
html5新增<canvas>标签用于绘制图像,默认宽高是300*150,canvas的宽高需要在这里设置,在css中设置会有问题:设置的形状,如矩形,会等比缩放,而非设置的宽高. 在不支 ...
- HTML5自学笔记[ 24 ]canvas绘图之星空草地
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- HTML5自学笔记[ 17 ]canvas绘图基础4
绘制图像: drawImage(oImg,x,y),oImg是一个Image对象,(x,y)为绘制起点,绘制的图像大小和源图大小一样. drawImage(oImg,x,y,w,h),后两个参数设置绘 ...
- HTML5自学笔记[ 16 ]canvas绘图基础3
canvas还提供提供了一些动态方法,使图像可以旋转.缩放和移动,与css3中的方法一样. 移动:translate(x,y),x和y为横竖方向的偏移量 旋转:rotate(弧度),弧度=角度*Mat ...
随机推荐
- DIV的表单布局
表单布局其实用表格最好了,可是表格的话,无法定位,这个是一个硬伤. <!DOCTYPE html> <html> <head> <meta charset=& ...
- Django忘记管理员账号和密码的解决办法
看着Django的教程学习搭建网站,结果忘记第一次创建的账号和密码了.结果搭建成功以后,一直无法登陆到管理页面,进行不下去了. 如图所示: 在网上找了很多的方法都不行,最后使用新建一个superuse ...
- 在Spring中使用脚本
Spring支持3中不同的脚本语言(看来支持地还挺多的嘛):JRuby.Groovy和BeanShell. 这三个都是java社区的脚本语言(反正到目前为止我一个都没用过,可见我有多挫). JRuby ...
- ettercap
作者: 官网:http://ettercap.github.io/ettercap/ 源码:https://github.com/Ettercap/ettercap 功能:arp欺骗
- iOS添加广告的主要方法
//用户取消正在执行的广告时 调用 - (void)cancelBannerViewAction { NSLog(@"Banner was cancelled!"); self.a ...
- Java——Image 图片切割
package com.tb.image; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io ...
- Moq的使用
参考资料: 1. http://www.codeproject.com/Tips/729646/TDD-using-MOQ 2. https://github.com/Moq/moq4/wiki/Qu ...
- 详解.NET异步
在说到异步前,先来理一下几个容易混淆的概念,并行.多线程.异步. 并行,一般指并行计算,是说同一时刻有多条指令同时被执行,这些指令可能执行于同一CPU的多核上,或者多个CPU上,或者多个物理主机甚至多 ...
- Oracle中synonym和index
笔记: Oracle-同义词--通过用户名(模式名).表名 --授权:grant create synonym to test1(system用户下授权)) --私有 creat ...
- Android_Nexus4_屏幕截图
1. 一般都是 音量-键 + 电源键,同时按一秒以上 2. 3.