【发布时间】:2019-04-27 00:22:15
【问题描述】:
我有一个大小为 392x392 的 HTML5 画布,我可以在其中绘制一些东西。 我正在尝试将该画布的内容调整为另一个大小为 28x28 像素的画布。
以下方法工作正常,除了我必须单击“调整图像大小”按钮两次 - 为什么会这样,我该如何解决?
function resize() {
//get the base64 string of the Image
var dataURL = canvas.toDataURL();
//draw the base64 string into a 28x28 canvas (for resizing)
var img = new Image();
img.src = dataURL;
resizedCtx.drawImage(img, 0, 0, 28, 28);
}
<canvas id="canvas" width="392" height="392" style="border:1px solid;"></canvas>
<br>
<br>
<input type="button" value="resize image" id="btn" size="30" onclick="resize()">
<br>
<br>
<canvas id="resizedCanvas" width="28" height="28" style="border:1px solid;"></canvas>
<script>
canvas = document.getElementById('canvas');
ctx = canvas.getContext("2d");
resizedCanvas = document.getElementById('resizedCanvas');
resizedCtx = resizedCanvas.getContext('2d');
ctx.fillStyle = "red";
ctx.fillRect(20, 20, 280, 280);
</script>
提前致谢!
【问题讨论】:
-
重要提示: 甚至不要通过 img 来调整画布大小。只需将画布直接绘制在调整大小的画布上即可。
标签: javascript html canvas image-resizing double-click