HTML5画布drawImage图像大小不正确

You*_*ice 6 javascript html5 canvas

您好我有问题我尝试drawImage在50px x 50px画布上使用功能50px x 50px在画布上绘制图像,但我比我需要的要小.

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

var img = new Image();
img.onload = function() {
    $("canvas").css("width", 50);
    $("canvas").css("height", 50);
    ctx.drawImage(img, 0, 0, 50, 50); //bad here why not drawing 50x50px image on the canvas?           
}
img.src = 'http://www.w3schools.com/tags/planets.gif';
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<img src="http://www.w3schools.com/tags/planets.gif" width="100" height="100" style="position: absolute; top: 0px; left: 0px">
<canvas id="canvas" style="position: absolute; top: 0px; left: 120px; border: 1px solid #000"></canvas>
Run Code Online (Sandbox Code Playgroud)

Cer*_*rus 17

不要通过CSS设置画布的宽度和高度.这将拉伸/压缩实际画布,缩放内容.

请改用旧的HTML widthheight属性:

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

var img = new Image();
img.onload = function() {
    ctx.drawImage(img, 0, 0, 50, 50);
}
img.src = 'http://www.w3schools.com/tags/planets.gif';
Run Code Online (Sandbox Code Playgroud)
<img src="http://www.w3schools.com/tags/planets.gif" width="100" height="100" style="position: absolute; top: 0px; left: 0px">
<canvas
    id="canvas"
    style="position: absolute; top: 0px; left: 120px; border: 1px solid #000"
    width="50"
    height="50">
</canvas>
Run Code Online (Sandbox Code Playgroud)

这些属性实际上会更改画布的上下文的宽度和高度,从而产生与您期望的大小完全相同的图像.