html5 Canvas 未显示完整图像

标签 html canvas html5-canvas

我的图片大小是 940 * 300,但 html5 canvas 在 chrome 中只显示了部分图片。你能帮忙解决这个问题吗?

下面是代码

<!DOCTYPE html>
<html>
    <head>
        <style></style>
    </head>
    <body onload="draw();">
        <p>Drag me</p>
        <canvas id="paint_area"></canvas>

        <script>
            function draw() {
                var ctx = document.getElementById('paint_area').getContext('2d');

                //ctx.fillStyle = '#cc3300';

                var img_buffer = document.createElement('img');
                img_buffer.src = 'http://www.jobcons.in/homebanner.jpg';
                var imgWidth = img_buffer.width;
                var imgHeight = img_buffer.height;
                ctx.width = imgWidth;
                ctx.height = imgHeight;
                ctx.drawImage(img_buffer,0,0,imgWidth,imgHeight);
            }
        </script>
    </body>
</html>

最佳答案

两件事:

  • 您设置的上下文大小没有多大意义。 Canvas 有宽度和高度。

  • 您真的应该使用 img_buffer.onload 来确保只在图像加载时绘制图像,而不是在图像完全加载之前绘制。

fiddle :http://jsfiddle.net/pimvdb/TpFQ8/

所以:

<canvas id="paint_area" width="940" height="300"></canvas>

和:

var cv  = document.getElementById('paint_area'),
    ctx = ctx.getContext('2d');

和:

img_buffer.onload = function() {
    var imgWidth = img_buffer.width;
    var imgHeight = img_buffer.height;
    cv.width = imgWidth;
    cv.height = imgHeight;
    ctx.drawImage(img_buffer, 0, 0, imgWidth, imgHeight);
}

关于html5 Canvas 未显示完整图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55974521/

相关文章:

html - 包含 HTML 和 CSS 图像的响应表

Android:如何使用大量的Bitmaps?

JavaScript Canvas 动画

javascript - 使用函数将变量(id)从html传递到外部js文件

html - 有什么方法可以用 css3 和 html5 的新实现来隐藏部分 div 吗?

html - 双下划线效果CSS

javascript - 功能前延迟并在悬停时取消功能

javascript - 有没有办法在 Firefox OS 中预填电子邮件正文

android - 关于android canvas绘图的效率

javascript - Canvas : Restore Image after removing object on it