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 ...
随机推荐
- 八、java集合类
与数组的区别: 数组的长度是固定的,集合的长度是可变的.数组用来存放基本类型的数据,集合用来存放对象的引用. 1.集合类接口的常用方法 COllection接口是层次结构中的根接口,该接口提供了添加和 ...
- MVC开发模式
关于mvc详情可参阅:http://www.w3school.com.cn/aspnet/mvc_intro.asp MVC (Modal View Controler)本来是存在于Desktop程 ...
- HDU 5046 Airport(dlx)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5046 题意:n个城市修建m个机场,使得每个城市到最近进场的最大值最小. 思路:二分+dlx搜索判定. ...
- Cheatsheet: 2013 07.21 ~ 07.31
Mobile Android vs. iOS: Comparing the Development Process of the GQueues Mobile Apps Android Studio ...
- Mysql 中 text类型和 blog类型的异同
MySQL存在text和blob: (1)相同 在TEXT或BLOB列的存储或检索过程中,不存在大小写转换,当未运行在严格模式时,如果你为BLOB或TEXT列分配一个超过该列类型的最大长度的值值,值被 ...
- An Example of Pre-Query and Post-Query Triggers in Oracle Forms With Using Display_Item to Highlight Dynamically
Example is given for Pre-Query and Post-Query triggers in Oracle Forms, with using Display_Itembuilt ...
- (Theano 1)Theano自述文件
Theano在GitHub上的自述文件 https://github.com/Theano/Theano 也不知道这个Theano好不好,但是从Theano到Lasagne:基于Python的深度学习 ...
- nyoj 19擅长排列的小明 (DFS)
擅长排列的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想 ...
- iOS - Swift NSCalendar 日历
前言 public class NSCalendar : NSObject, NSCopying, NSSecureCoding NSCalendar 对世界上现存的常用的历法进行了封装,既提供了不同 ...
- iOS - UIImagePickerController
前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIImagePickerController : UINavigationController <NSCod ...