我可以更改canvas元素中的图像大小吗?

时间:2014-03-21 12:22:25

标签: javascript html5 image canvas

我想在canvas元素中有一个图像。画布将具有静态大小(例如800x600),但Image可以更大或更小。因此,如果图像较小,则图像周围会出现白色区域,如果图像较大,则图像将不适合画布,因此图像的某些部分将不可见。我想问的是以下内容。在画布上渲染图像后,我可以调整图像大小以适应画布(例如在用户输入之后)吗?

HTML

<canvas id="myCanvas" width="800" height="600">

JS

canvas = document.getElementById('myCanvas');
context = canvas.getContext('2d');
image = new Image();
image.src = 'url_to_image';
//lets say image is 400x300;
//will this work too?
image.width = image.width*2;
image.height = image.height * 2;
context.drawImage(image, 0, 0);
//or should i use this?
//context.drawImage(image, 0, 0, image.width*2, image.height * 2);

第二个拉伸图像以适合画布。我可以在致电drawImage之前拉伸图片(通过修改image.widthimage.height)吗?我看过一些编辑软件可以放大图像,画布保持静态,不会改变它的大小。

1 个答案:

答案 0 :(得分:4)

不正确:

image.width = image.width*2;
image.height = image.height * 2;
context.drawImage(image, 0, 0);

因为图片的widthheight属性只读

<强>正确:

context.drawImage(image, 0, 0, image.width*2, image.height * 2);

这是另一种使图像与宽高比无关的画布的方法:
Simulation background-size: cover in canvas