gpt4 book ai didi

javascript - 虚拟 Canvas putimagedata 不起作用

转载 作者:行者123 更新时间:2023-12-03 12:34:38 25 4
gpt4 key购买 nike

我对虚拟 Canvas 的概念不熟悉,知道为什么下面的代码不起作用吗?

    <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>

如果我绘制矩形或任何其他对象,这个概念就有效,但是当我加载图像时它不显示虚拟 Canvas 上加载的图像。如下例所示,效果很好。

  $(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);


});

最佳答案

您还必须等待 getImageData 等,直到图像加载完毕,因此将图像加载后移动到 onload 处理程序中(或者将它们包装在从加载):

img1.onload = function () {

ctx1.drawImage(this, 0, 0);

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

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

如果不这样做,那么当您调用 getImageData 时,图像可能无法加载并绘制到 Canvas 上,从而导致空白字节数组。

关于javascript - 虚拟 Canvas putimagedata 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23781356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com