我想在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.width
和image.height
)吗?我看过一些编辑软件可以放大图像,画布保持静态,不会改变它的大小。
答案 0 :(得分:4)
不正确:
image.width = image.width*2;
image.height = image.height * 2;
context.drawImage(image, 0, 0);
因为图片的width
和height
属性只读。
<强>正确:强>
context.drawImage(image, 0, 0, image.width*2, image.height * 2);
这是另一种使图像与宽高比无关的画布的方法:
Simulation background-size: cover in canvas