【问题标题】:Create Canvas from image on javascript从 javascript 上的图像创建画布
【发布时间】:2013-05-14 10:23:25
【问题描述】:

我正在尝试学习在 javascript 中操作图像和画布。我想知道为什么我们不能这样做:

var urlimg='http://images.aviary.com/imagesv5/feather_default.jpg'; 
         var can = document.getElementById('canvas');
         var ctx = can.getContext('2d');
         var img = new Image();
         img.onload = function(){

         }
         img.src =urlimg ;
         can.width = img.width;
         can.height = img.height;
         ctx.drawImage(img, 0, 0, img.width, img.height);
         $('#image1').attr('src', img.src);

我们必须这样做:

var urlimg='http://images.aviary.com/imagesv5/feather_default.jpg'; 
         var can = document.getElementById('canvas');
         var ctx = can.getContext('2d');
         var img = new Image();
         img.onload = function(){
             can.width = img.width;
             can.height = img.height;
             ctx.drawImage(img, 0, 0, img.width, img.height);
         }
         img.src =urlimg ;
         $('#image1').attr('src', img.src);

是因为图片加载时间问题吗?

我可以从现有的对象图像创建画布吗?

谢谢。

【问题讨论】:

  • 图片在设置src属性后异步加载。

标签: javascript image html5-canvas


【解决方案1】:

是因为图片加载时间问题吗?

部分是的,但主要是因为图像加载是异步的,所以下一行代码会立即执行同时图像加载。让您知道在完成后引发了一个事件。

我可以从现有的对象图像创建画布吗?

不(不是直接),但是您可以将图像绘制到画布上以对其进行初始化(就像您已经做的那样):

ctx.drawImage(imageElement, 0, 0, width, height);

【讨论】:

  • 感谢您的回答。像这样创建的图像有什么区别: var=Image();和 jquery 中的 $('#image1') ,其中 'image1' 是一个 img 元素的 id :
  • @McbJam 如果您的意思是var el = new Image(),或者在任何情况下如果您使用document.getElelementById(),它们将返回元素本身,而 jQuery 的 $ 返回一个 jQuery 对象 -一种包装好的套装。有关更多信息,请参见此处:stackoverflow.com/questions/1302428/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 2010-10-09
  • 1970-01-01
  • 2022-01-04
相关资源
最近更新 更多