8

我写了一个简单的例子来说明这一点。

画布大小为 500px * 400px。我的图像的原始大小是 200px * 160px,dpi 为 480。我想在画布中以原始大小显示这个图像,这样它就不会被调整大小,这会使图像模糊。

这是代码:

<html>
<head>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $("#canvas").width(500);
            $("#canvas").height(400);

            var canvas = $("#canvas").get(0);
            var ctx = canvas.getContext('2d');

            var image = new Image();
            image.src = "fish01.png"; // size is 200px * 160px

            ctx.drawImage(image, 0, 0); // same with ctx.drawImage(image, 0, 0, 200, 160); 
        });
    </script>
</head>

<body style="background-color: #ccc; margin: 0px;">
    <canvas id="canvas" style="background-color: #66c"></canvas>
</body>
</html>

原图为:

200 像素 * 160 像素

结果是: 在此处输入图像描述

我觉得这很奇怪,因为画布的大小是 500px * 400px,而图像的大小是 200px * 160px,图像怎么会超出画布的范围?并且似乎图像已调整大小。

我想知道如何以原始大小显示图像。请给一些建议。谢谢!

4

2 回答 2

13

尝试添加您的画布widthheight改为属性:

$("#canvas").attr("width", "500px");
$("#canvas").attr("height", "400px");

这定义了画布中的可绘制空间,否则我认为它默认为 2:1。我知道您正在使用.width().height()但他们设置了一个无单位的值,而我们将其明确定义为带有.attr().

示例 jsFiddle

于 2012-08-22T09:25:55.853 回答
4

当您不向画布标签添加width和属性时,您将使用默认和. 和heightwidthheight

$("#canvas").width(500);
$("#canvas").height(400);

只需通过 css 这个标签拉伸。

所以使用<canvas id="canvas" width="500" height="400"></canvas>

或者使用$('#canvas').attr函数

于 2012-08-22T09:30:37.457 回答