canvas(五) 使用图像

Posted

tags:

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

参考技术A

canvas 具有操作图像的能力。可以用于动态的图像合成或者作为图像的背景,以及游戏界面(Sprites)。浏览器支持的任意外部图片格式都可以使用,还可以使用同一个页面中其他canvas元素生成的图片作为图片源。

引入图像到 canvas 里需要以下两部基本操作:

canvas 的API 可以使用下面这些类型中的一种作为图片的源:

HTMLImageElement
这些图片是由 Image() 函数构造出来的,或者任何的 <img> 元素

HTMLVideoElement
用一个html的 <video> 元素作为图片源,可以从视频中抓取当前帧作为一个图像

HTMLCanvasElement
可以使用另一个 <canvas> 元素作为图片源。

ImageBitmap

在 HTMLImageElement 上使用 crossOrigin 属性,可以请求加载其他域名上面的图片。

使用 document.getElementsByIdTagName 或者 document.getElementById 方法来获取其他 canvas 元素。

一旦获得了源图对象,我们就可以使用 drawImage 方法将它渲染到 canvas 里。 drawImage 方法有三种形态,最常见的是:

drawImage(image,x,y)
其中 image 是image 或者 canvas 对象,x/y是目标在 canvas里的起始坐标。

drawImage 的第二种形态,增加了两个用于控制图像在 canvas 中的参数。

drawImage(image,x,y,width,height)
这个方法多了2个参数: width 和 height ,这两个参数用来控制当 canvas 画入时应该缩放的大小。

drawImage 方法的第三个也是最后一个变种有8个新参数,用于控制做切片显示的。

drawImage(image,sx,sy,sWidth,sHeight,dx,dy,dWidth,dHeight)
第一个参数是源图像引入,后面的前4个是定义图像源的切片位置和大小,后4个则是定义切片的目标显示位置和大小。

在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(五) 使用图像的主要内容,如果未能解决你的问题,请参考以下文章

在canvas中使用图像

重点突破——使用Canvas进行绘图图像

SVG和Canvas绘图(一)

canvas使用图像(绘制图、图像平铺、图像剪裁、像素处理、绘制文字)

html5 | IT小白必入,五分钟掌握Canvas系列

如何使用canvas绘制走势图