【HTML5 绘图与动画】 使用图像 1.导入图像 2.缩放图像 3.裁切图像

以下内容为学习下图这本书做的笔记,非原创。做笔记主要是为了实践一下看看结果加深记忆。

目录:

1.导入图像 2.缩放图像 3.裁切图像

1.导入图像

导入图片的步骤:第 1 步:确定图像来源  第 2 步:使用 drawImage() 方法将图像绘制到 canvas 中

确定图片来源有4种方法:

Ⅰ 页面内的图像

Ⅱ 其它canvas元素

Ⅲ 用脚本创建一个新的 image 对象

Ⅳ 使用 data:url 方式引用图像

① 以创建一个新的image对象的方式来确定图像来源,导入图像

语句:

 1 <canvas id="canvas" width="500" height="500" style="border:solid 1px #999;"></canvas>
 2 <script>
 3     draw();
 4     function draw(){
 5         var ctx = document.getElementById('canvas').getContext('2d');
 6 //第 1 步,确定图像来源
 7         var img = new Image();          //创建新的 Image 对象
 8         //如果要解决图片预装载的问题,可以使用 onload 事件一边装载图像一边执行绘制图像的函数
 9         img.onload = function(){        
10 //第 2 步,使用 drawImage() 方法将图像绘制到 canvas 中
11             ctx.drawImage(img, 0, 0);
12         }
13         img.src = '1.jpg';      //设置图像路径
14     }
15 </script>

页面表现:

 使用 drawImage() 方法能够绘制图像的某些部分,以及增加或减少图像的尺寸。用法如下:

语法1:在画布上定位图像

context.drawImage( img, x , y )

参数说明:img : 规定要使用的图像、画布或视频

      x :开始剪切的 x 坐标位置

      y :开始剪切的 y 坐标位置

语法2: 在画布上定位图像,并规定图像的宽度和高度

context.drawImage( img, x , y,width, height )

参数说明: width:要使用的图片的宽度

     height:要使用的图片的高度

语法3:剪切图像,并在画布上定位被剪切的部分

context.drawImage( img, sx , sy,swidth, sheight, width, height )

参数说明:   sx:开始剪切的 x 坐标的位置

       sy :开始剪切的 y 坐标的位置

      width:被剪切图像的宽度

     height:被剪切图像的高度

2.缩放图像

① 设置导入的图像放大显示,并仅仅显示头部位置

语句:

 1 <canvas id="canvas" width="500" height="500" style="border:solid 1px #999;"></canvas>
 2 <script>
 3     draw();
 4     function draw(){
 5         var ctx = document.getElementById('canvas').getContext('2d');
 6         var img = new Image();
 7         img.onload = function(){    
 8             //context.drawImage( img, x , y,width, height )    
 9             ctx.drawImage(img, -300, -40, 1000, 800);
10         }
11         img.src = '1.jpg';
12     }
13 </script>

页面表现:

3.裁切图像

语句:

 1 <canvas id="canvas" width="500" height="500" style="border:solid 1px #999;"></canvas>
 2 <script>
 3     draw();
 4     function draw(){
 5         var ctx = document.getElementById('canvas').getContext('2d');
 6         var img = new Image();
 7         img.onload = function(){      
 8             //context.drawImage( img, sx , sy,swidth, sheight, width, height )  
 9             ctx.drawImage(img, 0, 0, 230, 200, 20, 20, 400, 400);
10         }
11         img.src = '1.jpg';
12     }
13 </script>

页面表现:

4. 平铺图像

① 使用drawImage() 方法

语句:

 1 <canvas id="canvas" width="500" height="500" style="border:solid 1px #999;"></canvas>
 2 <script>
 3     draw();
 4     function draw(){
 5         var ctx = document.getElementById('canvas').getContext('2d');
 6         var img = new Image();
 7         img.src = "1.jpg";
 8         img.onload = function(){    
 9             var scale = 5;          //平铺比例
10             var n1 = img.width/scale;     //缩小后图像宽度
11             var n2 = img.height/scale;    //缩小后图像高度
12             var n3 = canvas.width/n1;       //平铺横向个数
13             var n4 = canvas.height/n2;      //平铺纵向个数
14             for( var i=0; i<n3; i++ ){
15                 for( var j=0; j<n4; j++ ){
16                     ctx.drawImage(img, i*n1, j*n2, n1, n2);
17                 }
18             }
19         };
20     }
21 </script>

页面表现:

② 指定图像文件之后,使用 createPattern() 方法创建填充样式,然后将该样式指定给图形上下文对象的 fillStyle 属性,最后填充画布。

语句:

 1 <canvas id="canvas" width="500" height="500" style="border:solid 1px #999;"></canvas>
 2 <script>
 3     draw();
 4     function draw(){
 5         var ctx = document.getElementById('canvas').getContext('2d');
 6         var img = new Image();
 7         img.src = "1.png";
 8         img.onload = function(){    
 9             var ptrn = ctx.createPattern(img, 'repeat');    //创建填充样式,全方向平铺
10             ctx.fillStyle = ptrn;               //创建填充样式
11             ctx.fillRect(0, 0, 500, 500);       //填充画布
12         };
13     }
14 </script>

页面表现:

原文地址:https://www.cnblogs.com/xiaoxuStudy/p/12229943.html