heyiyi1117 2018-12-04 11:40 采纳率: 100%
浏览 305
已采纳

从本机上选择图片文件,怎样才能让图片到画布上?我代码是哪里出错了,在网上没搜到相关代码案例
















var img = new image();//var 声明关键字
//解决跨域问题
img.crossOrigin = "Anonymous";

//img.src="timg.jpg";
var canvas;
var ctx;
//图片加载完成触发
img.onload = function () {
var file = $("#imgForm").find("input")[0].files[0];
var reader = new FileReader();
var imgFile;
reader.onload = function (e) {
alert('文件读取完成');
imgFile = e.target.result;
console.log(imgFile);
$("#imgContent").attr('src', imgFile);
};
reader.readAsDataURL(file);

  canvas = document.getElementById("myCanvas");
  img.height = 0.4 * img.height;
  img.width = 0.4 * img.width;
  canvas.width = img.width;  
  canvas.height = img.height;  
  ctx=canvas.getContext("2d");
  ctx.drawImage(img,0,0,img.width,img.height);

}

  • 写回答

1条回答 默认 最新

  • 很倔也很天真 2018-12-04 13:22
    关注
     <input type="file" id="f" onchange="fileLoad()">
        <div>
            <canvas id="draw"></canvas>
        </div>
        <script>
            function fileLoad() {
                var f = document.getElementById('f').files[0];
                var reader = new FileReader();
                reader.onload = function(e) {
                    alert('文件读取完成');
                    var imgFile = e.target.result;
                    var img = new Image();
                    img.onload = imgLoad;
                    img.src = imgFile;
                };
                reader.readAsDataURL(f);
            }
            function imgLoad(){
                console.log('image loaded');
                var canvas = document.getElementById("draw");
                var ctx = canvas.getContext("2d");
                var height = 0.4 * this.height;
                var width = 0.4 * this.width;
                canvas.width = width;
                canvas.height = height;
                ctx.drawImage(this, 0, 0, width, height);
            }
        </script>
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题