javascript - JS && HTML5 如何在不同宽度和高度的 Canvas 中动态打开图片

标签 javascript canvas

三天以来我一直在寻找, 我如何使用 vanilla javascript 创建一个按钮来在 HTML5 Canvas 中打开图片。

我对这段代码进行了更改和重新更改,但始终无法正常工作, 通常,打开我的图片一次,如果我重新单击按钮,就会出现错误, 如果我重新启动脚本是否有效,在有效的那一刻我放置了一个警报(), 在“reader.addEventListener”中,我没有正确理解addEventListener,我正在重新阅读文档。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" >
    </head>
    <body>
        <canvas id="canvasToDraw"></canvas>
        <input type="file" onclick="openPicture()"></input>
        <script>
        function openPicture()
        {
            var file = document.querySelector('input[type=file]').files[0];
            var reader  = new FileReader();



            reader.readAsDataURL(file);
            // 
            img = new Image();
            img.id = "bufferPicture";
            document.body.appendChild( img);

            reader.addEventListener('load', function() {                        
                    img.src = ""+reader.result;

            var height = img.height;
            var width = img.width;

            document.getElementById("canvasToDraw").width = width;
            document.getElementById("canvasToDraw").height = height;

            var contextCanvas = document.getElementById("canvasToDraw").getContext("2d");
            contextCanvas.drawImage(    document.getElementById("bufferPicture"), 0, 0  );
            });


            // remove the picture
            // document.body.removeChild(document.getElementById("bufferPicture"));
        }
        </script>
    </body>
</html>

最佳答案

尝试一下下面的代码。

img.src = ""+reader.result;
img.onload = function() {
    var height = img.height;
    var width = img.width;

    document.getElementById("canvasToDraw").width = width;
    document.getElementById("canvasToDraw").height = height;

    var contextCanvas = document.getElementById("canvasToDraw").getContext("2d");
    contextCanvas.drawImage(    document.getElementById("bufferPicture"), 0, 0  );
}

关于javascript - JS && HTML5 如何在不同宽度和高度的 Canvas 中动态打开图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51760474/

相关文章:

javascript - 在 Canvas 上绘制动画曲线

javascript - Canvas 绘制图像错误

javascript - 具有不透明度的 CSS3 过渡不起作用

javascript - 使用 jQuery 删除具有给定 id 的所有元素

javascript - JQuery 触发自定义事件导致错误

javascript - 使用 jQuery 访问 Canvas 上的内容

javascript - 第一次点击html Canvas 时如何防止滚动?

javascript - 如何计算直线和任意形状的交点?

javascript - 如何修复 Visual Studio 代码上的 IntelliSense?

javascript - 如何动态更新kml文件/图层?