绘制图片

167 阅读1分钟

绘制图片

context.drawImage(img,x,y):方法在画布上绘制图像、画布或视频,在画布上定位图像。

context.drawImage(img,x,y,width,height):在画布上定位图像,并规定图像的宽度和高度:

context.drawImage(img,sx,sy,swidth,sheight,x,y,width,height):剪切图像,并在画布上定位被剪切的部分:

参数

img:规定要使用的图像、画布或视频。不能填图片的网址,和图片的相对路径,它不会做网络请求。只能填写图片的编码,可以填写img元素节点,前提条件是图片要先加载完毕后,才能用img元素节点来绘制图片。

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

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

swidth:可选,被剪切图像的宽度。

sheight:可选,被剪切图像的高度。

x:在画布上放置图像的 x 坐标位置。

y:在画布上放置图像的 y 坐标位置。

width:可选,要使用的图像的宽度,(伸展或缩小图像)

height:可选,要使用的图像的高度,(伸展或缩小图像)

<body>
    <style>
        #canvas {
            border: 1px goldenrod solid;
        }
    </style>
    <canvas id="canvas" width="1500px" height="1000px"></canvas>
    <script>
        /** @type {HTMLCanvasElement} */
        let canvas=document.querySelector("#canvas");
        let ctx=canvas.getContext("2d");
        //创建一个Image对象,定义Image对象的src,这样做就相当于给浏览器缓存了一张图片。
        let img1=new Image();
        img1.src="../DOM操作/image/img-a30d63eab9eab3fc6c02db6696786196.jpg";
        let img2=new Image();
        img2.src="../DOM操作/image/mmexport1572688935095.jpg";
        // img1.onload=function(){
        //     //当img1把src的资源加载完毕了这个函数才会执行
        //     //img1这个元素节点就可以获取到图片,画布中就可以绘制出来
                //图片必须要加载完毕,才能绘制
        //     ctx.drawImage(img1,10,10);
        // };
        window.onload=function(){
            //当浏览器的window加载完毕后这个函数就会执行
            ctx.drawImage(img1,10,10);
            ctx.drawImage(img2,700,20);
        };
        //img元素先加载完,window对象后加载完即img.onload比window.onload先运行完毕。
    </script>

利用计时器裁剪图片做成动画效果

        let canvas=document.querySelector("#canvas");
        let ctx=canvas.getContext("2d");
        let image=new Image();
        image.src="./h_proc.jpg";
        window.onload=function(){
            let i=0;
            setInterval(()=>{
                canvas.width=canvas.width;
                //一张小图宽为108,随着裁剪的x增大就裁剪到后面的图
                //i%10:被除数取余数不会超过除数,则i%10中的i为0-9
                i=i%10;
                i++;
                ctx.drawImage(image,i*108,0,108,101,20,200,108,101);
                
            },30);
        };

image.png

2.gif