是新概念的虚拟画布,知道为什么下面的代码不工作吗?
<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>如果我绘制矩形或任何其他对象,这个概念是可行的,但是当我加载图像时,它不会显示加载在虚拟画布上的图像。如下面的例子所示,效果很好。
$(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);
});发布于 2014-05-21 11:08:01
您还必须与getImageData等一起等待,直到图像加载完毕,因此,将图像加载到onload处理程序中后所需完成的所有操作(或将它们封装在从onload调用的函数中):
img1.onload = function () {
ctx1.drawImage(this, 0, 0);
imgdata = ctx1.getImageData(0, 0, c2.width, c2.height);
ctx2.putImageData(imgdata, 0, 0);
};如果没有,那么当您调用getImageData时,图像可能不会加载并绘制到画布上,这会导致一个空字节数组。
https://stackoverflow.com/questions/23781356
复制相似问题