HTML5自学笔记[ 21 ]canvas绘图实例之马赛克

 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title>马赛克</title>
 6     <style>
 7         body{background:#000;}
 8         canvas{background: #fff; margin-left:500px;}
 9     </style>
10     <script>
11         window.onload = function(){
12             var cvs = document.getElementById(‘canvas1‘);
13             var cxt = cvs.getContext(‘2d‘);
14
15             var oImg = new Image();
16             oImg.src = ‘1.jpg‘;
17             oImg.onload = function(){
18                 cxt.drawImage(this,0,0);
19                 var imgData = cxt.getImageData(0,0,oImg.width,oImg.height);
20                 var newImgData = cxt.createImageData(oImg.width,oImg.height);
21                 var num = 10;//该参数指定马赛克格子的大小
22
23                 var stepW = oImg.width/num;//一行内格子数
24                 var stepH = oImg.height/num;//一列内格子数
25
26
27                 for(var j=0;j<stepH;j++){
28                     for(var i=0;i<stepW;i++){
29                         //获取10*10方格内随机的一个颜色
30                         var colors = getXY(imgData,i*num+Math.floor(Math.random()*num),j*num+Math.floor(Math.random()*num));
31                         //让10*10方格的颜色都为随机色
32                         for(var s=0;s<num;s++){
33                             for(var t=0;t<num;t++){
34                                 setXY(newImgData,i*num+t,j*num+s,colors);
35                             }
36                         }
37
38                     }
39                 }
40
41                 cxt.putImageData(newImgData,0,oImg.height+50);
42             }
43         }
44
45         function getXY(imgData,x,y){
46             var result = [];
47             result.push(imgData.data[(imgData.width*y+x)*4]);
48             result.push(imgData.data[(imgData.width*y+x)*4+1]);
49             result.push(imgData.data[(imgData.width*y+x)*4+2]);
50             result.push(imgData.data[(imgData.width*y+x)*4+3]);
51             return result;
52         }
53
54         function setXY(imgData,x,y,colors){
55             imgData.data[(imgData.width*y+x)*4] = colors[0];
56             imgData.data[(imgData.width*y+x)*4+1] = colors[1];
57             imgData.data[(imgData.width*y+x)*4+2] = colors[2];
58             imgData.data[(imgData.width*y+x)*4+3] = colors[3];
59         }
60
61
62     </script>
63
64 </head>
65 <body>
66 <canvas id="canvas1" width="500" height="500"></canvas>
67
68 </body>
69 </html>
时间: 2024-12-09 21:06:46

HTML5自学笔记[ 21 ]canvas绘图实例之马赛克的相关文章

HTML5自学笔记[20 ]canvas绘图实例之绘制倒影

1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title>倒影</title> 6 <style> 7 body{background:#000;} 8 canvas{background: #fff; margin-left:500px;} 9 </style> 10

HTML5自学笔记[ 24 ]canvas绘图之星空草地

1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 7 <style> 8 body{ background:#fff;} 9 div{ width:800px; height:600px; margin:0 auto;} 10 canvas{ backg

HTML5自学笔记[ 17 ]canvas绘图基础4

绘制图像: drawImage(oImg,x,y),oImg是一个Image对象,(x,y)为绘制起点,绘制的图像大小和源图大小一样. drawImage(oImg,x,y,w,h),后两个参数设置绘制后的图形大小. drawImage(oImg,x1,y1,w1,h1,x2,y2,w2,h2),该方法获取源图像的一部分进行绘制并且指定绘制起点和绘制后图像的大小,x1/y1/w1/h1表示选取源图上(x1,y1)点起宽w1高h1的部分,x2/y2/w2/h2表示将选取的部分绘制到画布(x2,y2

HTML5自学笔记[ 14 ]canvas绘图基础2

canvas绘制路径不仅可以绘制直线和多边形,还提供了绘制曲线的方法,利用这些方法可以画出多种曲线效果. 方法1:arc(x,y,r,起始弧度,结束弧度,绘制方向);其中(x,y)为圆心坐标,r为半径,弧度计算公式:deg*Math.PI/180,绘制方向默认为false表示顺时针绘制 ,设置为true时,逆时针绘制. 例1,顺时针绘制0-90°圆弧: 1 oContext.beginPath(); 2 3 oContext.arc(300,300,200,0,90*Math.PI/180,fa

HTML5自学笔记[ 15 ]canvas绘图基础6

关于线条的一些属性: lineCap,这个属性表示的是线条两端的样式,值有butt(默认)/round/square. lineJoin,这个属性表示线条相交的方式,值有miter(默认)/bevel/round: miterLimit,该属性指定默认情况下lineJoin采用miter方式的极限值:比如,在上面的例子中,将miterLimit设置为1,那么第一个图的两条线的相交方式就会自动转变为bevel.

Html5 Canvas笔记(2)-Canvas绘图

用Canvas API绘图,需要画图形的边线并设置内部区域填充,边线英文语法对应stroke,填充对应fill,在后面我们会频繁看到这2个英文单词的出现.Canvas API内置的形状绘图函数比较少,可以完成绘制矩形Rect.弧形Arc,也可以画贝塞尔曲线bezierCurver.quadraticCurve.下面我们一个一个的来说. 画线-Line 1 function drawScreen(){ 2 context.strokeStyle='black'; 3 context.lineWid

HTML5之Canvas绘图实例——饼状图

实现饼状分布画图(如下):调试环境:Firefox 页面代码: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 5 <!-- basic styles --> 6 <link href="assets/css/bootstrap.min.css" rel="stylesheet" /> 7 <link rel="styles

html5学习笔记:canvas

1.什么是canvas? 可以绘制图形的标签.一般用javascript来绘制. 2.创建一个画布 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title></title> 5 </head> 6 <body> 7 <canvas id="mycanvas" width="100" height="100"></

安卓笔记:Canvas绘图

1.Canvas常用方法: drawRect(RectF rect, Paint paint) //绘制区域,参数一为RectF一个区域 drawPath(Path path, Paint paint) //绘制一个路径,参数一为Path路径对象 drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)  //贴图,参数一就是我们常规的Bitmap对象,参数二是源区域(这里是bitmap),参数三是目标区域(应该在canvas的位置和大