HTML5画布,绘制后缩放图像

Mic*_*art 9 html5 canvas image scale

我正在尝试缩放已经绘制到画布中的图像.这是代码:

      var canvas = document.getElementById('splash-container');
      var context = canvas.getContext('2d');
      var imageObj = new Image();

      imageObj.onload = function() {
        // draw image at its original size
        context.drawImage(imageObj, 0, 0);
      };
      imageObj.src = 'images/mine.jpeg';


        // Now let's scale the image.
        // something like...
        imageObj.scale(0.3, 0.3);
Run Code Online (Sandbox Code Playgroud)

我应该怎么做?

rob*_*rtc 22

你在考虑错了.将图像绘制到图像上后,canvas它与imageObj对象无关.你做的任何事情都imageObj不会影响已经绘制的内容.如果要缩放图像,请执行以下drawImage功能:

drawImage(imgObj, 0, 0, imgObj.width * 0.3, imgObj.height * 0.3)
Run Code Online (Sandbox Code Playgroud)

如果您想要为缩放设置动画或者想要实现其他一些需要您以初始尺寸绘制图像的效果,则必须首先清除它,然后再绘制缩小的图像.


hob*_*key 6

robertc 所说的是正确的,但是如果您确实想在出于某种原因绘制画布后缩放图像,您可以使用 CSS 宽度/高度属性缩放整个画布,这样就可以缩放图像而无需重新绘制它。