HTML5 Canvas 教程:七、图像

本文详细介绍如何使用HTML5 Canvas进行图像操作,包括绘制、调整大小、裁剪及批量加载图像的方法。通过实例代码,读者将学会如何在画布上显示、修改和管理图像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

七、图像 Images

 

7.1绘制图像 Draw Image

 

为了使用HTML5画布绘制图像,可以使用drawImage()方法,该方法需要一个图像对象和一个目标点。目标点定义图像左上角相对于画布左上角的坐标值。

 

因为drawImage()方法需要图像对象作为参数,所以要首先创建一个图像,并在调用drawImage()方法之前将其加载。可以通过使用图像对象的onload属性来实现这一点。

 

<!DOCTYPE HTML>

<html>

  <head>

    <style>

      body {

        margin: 0px;

        padding: 0px;

      }

    </style>

  </head>

  <body>

    <canvas id="myCanvas" width="578" height="400"></canvas>

    <script>

      var canvas = document.getElementById('myCanvas');

      var context = canvas.getContext('2d');

      var imageObj = new Image();

 

      imageObj.onload = function() {

        context.drawImage(imageObj, 6950);

      };

      imageObj.src = 'darth-vader.jpg';

    </script>

  </body>

</html>

 

以上代码演示了在画布上绘制一张图片。

 

 

7.2图片尺寸 Image Size

 

若要使用HTML5画布设置图像的大小,可以再向drawImage()方法传入两个附加参数:宽度width和高度height。

 

<!DOCTYPE HTML>

<html>

  <head>

    <style>

      body {

        margin: 0px;

        padding: 0px;

      }

    </style>

  </head>

  <body>

    <canvas id="myCanvas" width="578" height="200"></canvas>

    <script>

      var canvas = document.getElementById('myCanvas');

      var context = canvas.getContext('2d');

      var x = 188;

      var y = 30;

      var width = 200;

      var height = 137;

      var imageObj = new Image();

 

      imageObj.onload = function() {

        context.drawImage(imageObj, x, y, width, height);

      };

      imageObj.src = 'darth-vader.jpg';

    </script>

  </body>

</html>

 

以上代码演示了再画布上绘制图片,并改变图片的原始尺寸。

 

 

7.3图像裁减 Image Crop

 

要使用HTML5 Canvas裁剪图像,我们可以向drawImage()方法添加六个附加参数,sourceX、sourceY、sourceWidth、sourceHeight、destWidth和destHeight。这些参数定义了要从图像中剪切出的矩形的位置和大小。

 

<!DOCTYPE HTML>

<html>

  <head>

    <style>

      body {

        margin: 0px;

        padding: 0px;

      }

    </style>

  </head>

  <body>

    <canvas id="myCanvas" width="578" height="200"></canvas>

    <script>

      var canvas = document.getElementById('myCanvas');

      var context = canvas.getContext('2d');

      var imageObj = new Image();

 

      imageObj.onload = function() {

        // draw cropped image

        var sourceX = 150;

        var sourceY = 0;

        var sourceWidth = 150;

        var sourceHeight = 150;

        var destWidth = sourceWidth;

        var destHeight = sourceHeight;

        var destX = canvas.width / 2 - destWidth / 2;

        var destY = canvas.height / 2 - destHeight / 2;

 

        context.drawImage(imageObj, sourceXsourceYsourceWidth

            sourceHeightdestXdestYdestWidthdestHeight);

      };

      imageObj.src = 'darth-vader.jpg';

    </script>

  </body>

</html>

 

以上代码演示了从原始图片中裁减出一部分,并绘制在画布上。

 

7.4图像加载器 Image Loader

 

当HTML5画布应用程序需要多个图像时,在画布上绘制之前加载所有图像通常是个好主意。为了简化加载过程,可以方便地使用图像加载器函数,该函数接受图像源的散列,创建图像的散列,然后在加载了所有图像时调用用户定义的函数。

 

<!DOCTYPE HTML>

<html>

  <head>

    <style>

      body {

        margin: 0px;

        padding: 0px;

      }

    </style>

  </head>

  <body>

    <canvas id="myCanvas" width="578" height="200"></canvas>

    <script>

      function loadImages(sourcescallback) {

        var images = {};

        var loadedImages = 0;

        var numImages = 0;

        // get num of sources

        for(var src in sources) {

          numImages++;

        }

        for(var src in sources) {

          images[src] = new Image();

          images[src].onload = function() {

            if(++loadedImages >= numImages) {

              callback(images);

            }

          };

          images[src].src = sources[src];

        }

      }

      var canvas = document.getElementById('myCanvas');

      var context = canvas.getContext('2d');

 

      var sources = {

        darthVader: 'darth-vader.jpg',

        yoda: 'yoda.jpg'

      };

 

      loadImages(sources, function(images) {

        context.drawImage(images.darthVader, 10030200137);

        context.drawImage(images.yoda, 3505593104);

      });

 

    </script>

  </body>

</html>

 

以上代码演示了通过图片加载器载入图片,创建图片对象、绑定图片载入事件,并保存在图片数组中。当图片载入成功时裁切并在画布上绘制图片。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值