在canvas中使用图像

Posted So istes immer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在canvas中使用图像相关的知识,希望对你有一定的参考价值。

在canvas中导入图像步骤

①确定图像来源

②使用drawImage()方法将图像绘制到canvas中

var img=new Image();                //使用脚本创建一个新的image对象

img.οnlοad=function(){                //使用onload事件一边装载图像,一边执行drawImage函数

//此处放置drawImage的语句

}

img.src="...";

drawImage(img,sx,sy,swidth,sheight,x,y,width,height)

img:规定要使用的图像

sx,sy:可选,开始剪切的坐标位置

swidth,sheight:可选,被剪切图像的宽度和高度

x,y:在画布上放置图像的坐标

width,height:要使用的图像的宽度,高度。


1.定位图像

images/1.jpg(480x300)

drawImage(img,x,y)

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
<canvas id="canvas" width="300" height="200" style="border: solid 1px #999;"></canvas>
<script>
    draw();
    function draw() {
        var ctx=document.getElementById('canvas').getContext('2d');
        var img=new Image();
        img.onload=function () {
            ctx.drawImage(img,0,0);
        }
        img.src='images/1.jpg';
    }
</script>
</body>
</html>

2.缩放图像

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

function draw() {
        var ctx=document.getElementById('canvas').getContext('2d');
        var img=new Image();
        img.onload=function () {
            ctx.drawImage(img,-80,-50,400,250);
        }
        img.src='images/1.jpg';
    }

3.裁剪图像

function draw() {
        var ctx=document.getElementById('canvas').getContext('2d');
        var img=new Image();
        img.onload=function () {
            ctx.drawImage(img,20,20,300,200,0,0,480,300);
        }
        img.src='images/1.jpg';
    }

4.平铺图像 

图像平铺就是让图像填满画布

①使用drawImage()方法

function draw() {
        var canvas=document.getElementById('canvas');
        var ctx=canvas.getContext('2d');
        var img=new Image();
        img.src='images/1.jpg';
        img.onload=function () {
            var scale=4;                //平铺比例
            var n1=img.width/scale;     //缩小后图像的宽度
            var n2=img.height/scale;    //缩小后图像的高度
            var n3=canvas.width/n1;     //平铺横向个数
            var n4=canvas.height/n2;     //平铺纵向个数
            for(var i=0;i<n3;i++)
                for(var j=0;j<n4;j++)
                    ctx.drawImage(img,i*n1,j*n2,n1,n2);
        }
    }

②使用createPattern(img,type)方法

 参数type取值

no-repeat:不平铺

repeat-x:横方向平铺

repeat-y:纵方向平铺

repeat:全方向平铺

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
<canvas id="canvas" width="960" height="600" style="border: solid 1px #999;"></canvas>
<script>
    draw();
    function draw() {
        var canvas=document.getElementById('canvas');
        var ctx=canvas.getContext('2d');
        var img=new Image();
        img.src='images/1.jpg';
        img.onload=function () {
            var ptn=ctx.createPattern(img,'repeat');//创建填充样式
            ctx.fillStyle=ptn;              //指定填充样式
            ctx.fillRect(0,0,960,600);      //填充画布
        }
    }
</script>
</body>
</html>

 

以上是关于在canvas中使用图像的主要内容,如果未能解决你的问题,请参考以下文章

自己定义View时,用到Paint Canvas的一些温故,简单的帧动画(动画一 ,&quot;掏粪男孩Gif&quot;顺便再提提onWindowFocusChanged)(代码片段

收藏|分享前端开发常用代码片段

如何从Android片段中的相机获取图像

HTML5 Canvas 图像缩放问题

如何在 Canvas 上的 Tkinter 中打开 PIL 图像

分享前端开发常用代码片段