2 qwfy 0520 qwfy_0520 于 2016.04.09 11:15 提问

想要在html5 canvas画布中打开一张本地图片,代码有什么问题
 <!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<script type="text/javascript">
var canvas=document.getElementById("demo");
var cxt=canvas.getContext("2d");
//打开图片
function preImg(sourceId, targetId) {  
cxt.clearRect(0,0,400,400);
    if (typeof FileReader === 'undefined') {  
        alert('Your browser does not support FileReader...');  
        return;  
    }  
    var reader = new FileReader();  

    reader.onload = function(e) {  
        var img = document.getElementById(targetId); 
        var cxt=document.getElementById("demo").getContext("2d") 
        img.src = this.result;  
        img.onload=function()
   {
    cxt.drawImage(img,0,0);
   }
    }  
    reader.readAsDataURL(document.getElementById(sourceId).files[0]);  
}  
</script>
</head>

<body>

<form action="">  
    <input type="file" name="imgOne" id="imgOne" onchange="preImg(this.id,'imgPre');" />  
    <img id="imgPre" src="" style="display: block;" />    
</form> 
<canvas id="demo" width="400" height="400" style="border:1px solid red"></canvas> 
</body>
</html>

1个回答

showbo
showbo   Ds   Rxr 2016.04.11 11:05

调整循序,script放canvas后面,要不获取不到对象

   <form action="">
        <input type="file" name="imgOne" id="imgOne" onchange="preImg(this.id,'imgPre');" />
        <img id="imgPre" src="" style="display: block;" />
    </form>
    <canvas id="demo" width="400" height="400" style="border:1px solid red"></canvas>
    <script type="text/javascript">
        var canvas = document.getElementById("demo");
        var cxt = canvas.getContext("2d");
        //打开图片
        function preImg(sourceId, targetId) {
            cxt.clearRect(0, 0, 400, 400);
            if (typeof FileReader === 'undefined') {
                alert('Your browser does not support FileReader...');
                return;
            }
            var reader = new FileReader();

            reader.onload = function (e) {
                var img = document.getElementById(targetId);
                var cxt = document.getElementById("demo").getContext("2d")
                img.src = this.result;
                img.onload = function () {
                    cxt.drawImage(img, 0, 0);
                }
            }
            reader.readAsDataURL(document.getElementById(sourceId).files[0]);
        }
    </script>
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!