javascript - 空白 Canvas HTML、JavaScript

标签 javascript html canvas

为什么我得到空白 Canvas ? 当 e.target.result 更改为网络某处图像的正常 url(在 img.src = e.target.result 中)时,它工作得很好。使用 src=e.target.result 添加 img 标签也可以。

  function handleFileSelect(evt) {
    var files = evt.target.files; 
    for (var i = 0, f; f = files[i]; i++) {
      if (!f.type.match('image.*')) {
        continue;
      }
      var reader = new FileReader();
      reader.onload = (function(theFile) {
        return function(e) {
          var span = document.createElement('span');
          span.innerHTML = ['<canvas class="thumb" title="', escape(theFile.name), '" id="', escape(theFile.name), '"></canvas>'].join('');
          document.getElementById('photo-list').insertBefore(span, null);
          var ctx=document.getElementById(escape(theFile.name)).getContext("2d");
          var img=document.createElement('img');
          img.src = e.target.result;
          ctx.drawImage(img,0,0);
        };
      })(f);
      reader.readAsDataURL(f);
    }
  }

  document.getElementById('files').addEventListener('change', handleFileSelect, false);

最佳答案

在代码中执行的位置

ctx.drawImage(img,0,0);

图像尚未完成加载(它是客户端,但加载仍然需要一些时间)。因此,将 drawImage 调用包装在 <img> 的加载处理程序中。元素,例如:

img.onload = (function (ctx) {
  return function () {
    ctx.drawImage(this, 0, 0);
  };
})(ctx);

Fiddle

关于javascript - 空白 Canvas HTML、JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33599307/

相关文章:

javascript - 更改的变量值在 ajax 请求之外不可用 - jQuery

javascript - onChange 事件不会触发 React 的输入字段

javascript - 事件处理程序优先级并在某些情况下忽略其他处理程序

javascript - Canvas 还是PNG? (适用于 html5 动画)

javascript - 在 angularjs 中使用 javascript 内联

c# - Razor View 中 int 的 mvc 下拉绑定(bind)

javascript - 通过关闭按钮折叠和打开 div

html - CSS边框 Angular 曲线向后

javascript - 在 Canvas 上绘制数组图像?

javascript - 如何删除 Sprite 区域不需要的部分