首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >虚拟画布putimagedata不工作

虚拟画布putimagedata不工作
EN

Stack Overflow用户
提问于 2014-05-21 11:03:21
回答 1查看 1.2K关注 0票数 0

是新概念的虚拟画布,知道为什么下面的代码不工作吗?

代码语言:javascript
复制
    <script type="text/javascript">

          $(document).ready(function () {


              var c1 = document.createElement('canvas');
              var ctx1 = c1.getContext("2d");
              var c2 = document.getElementById('Canvas2');
              var ctx2 = c2.getContext("2d");
              c1.width = c2.width;
              c1.height = c2.height;

              img1 = new Image();
              img1.src = 'A1.png';
              img1.onload = function () {
                  ctx1.drawImage(this, 0, 0);
              };


              imgdata = ctx1.getImageData(0, 0, c2.width, c2.height);

              ctx2.putImageData(imgdata, 0, 0);


          });

      </script>  




   <canvas id="Canvas2"  style="display:block;position:absolute;background-color:transparent;border:1px solid red;">
   Your browser does not support the HTML5 canvas tag.
   </canvas>

如果我绘制矩形或任何其他对象,这个概念是可行的,但是当我加载图像时,它不会显示加载在虚拟画布上的图像。如下面的例子所示,效果很好。

代码语言:javascript
复制
  $(document).ready(function () {


      var c1 = document.createElement('canvas');
      var ctx1 = c1.getContext("2d");
      var c2 = document.getElementById('Canvas2');
      var ctx2 = c2.getContext("2d");
      c1.width = c2.width;
      c1.height = c2.height;


      ctx1.fillRect(0, 20, 20, 20);

      imgdata = ctx1.getImageData(0, 0, c2.width, c2.height);

      ctx2.putImageData(imgdata, 0, 0);


  });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-21 11:08:01

您还必须与getImageData等一起等待,直到图像加载完毕,因此,将图像加载到onload处理程序中后所需完成的所有操作(或将它们封装在从onload调用的函数中):

代码语言:javascript
复制
img1.onload = function () {

     ctx1.drawImage(this, 0, 0);

     imgdata = ctx1.getImageData(0, 0, c2.width, c2.height);

     ctx2.putImageData(imgdata, 0, 0);
};

如果没有,那么当您调用getImageData时,图像可能不会加载并绘制到画布上,这会导致一个空字节数组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23781356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档