gpt4 book ai didi

javascript - 递归图像处理(Canvas、HTML5、Javascript)

转载 作者:太空宇宙 更新时间:2023-11-04 14:46:26 28 4
gpt4 key购买 nike

我正在尝试将 Canvas 用于一种分形算法,该算法需要先绘制一些东西,然后捕获该图像,绘制一些损坏的副本,然后捕获那个图像,等等。我是但是遇到了一个问题,因为 toDataURL() 似乎导致清除屏幕命令(“clearRect”)或恢复转换矩阵命令(“restore”)失败。

下面的代码旨在绘制一个黑色正方形,然后将 Canvas 复制到名为“img”的变量中,向下并向右平移,然后将“img”粘贴到新位置。结果应该是两个正方形。但它首先是 1 个方 block ,然后是 2 个方 block ,然后是 3 个,然后是 4 个……(然后它越界了,但大概它仍在从页面上复制方 block 。)

任何帮助将不胜感激。

以下是实际代码的链接:https://www.msu.edu/~brown202/dataURLproblem.html

代码如下:

    <html>
<head>
<script type="application/x-javascript">
function draw() {
var canvas = document.getElementById("fractal");
if (canvas.getContext) {
var ctx = canvas.getContext("2d");
var img;
ctx.clearRect(0,0,400,400); // clear the canvas, which measures 400 by 400
ctx.fillRect (0,0,100,100); // draw a square
ctx.save();
img = canvas.toDataURL(); // store the canvas image in "img"
ctx.translate(100,100); // shift picture
ctx.drawImage(img, 0,0); // draw the stored image of the canvas in the new place
ctx.restore();
}
}
function init() {
setInterval(draw,500); // repeat every 500 ms.
}
</script>
</head>
<body onload="init();">
<canvas id="fractal" width="400" height="400">
<p>This animation requires a browser that supports the
<a href="http://www.w3.org/html/wg/html5/">HTML5</a>
&lt;canvas&gt; feature.</p>
</canvas>
</body>
</html>

最佳答案

如果您在页面运行时查看 javascript 控制台,它会生成错误:

Uncaught TypeError: Type error

这是因为当 drawImage 函数是期待图像/ Canvas 。

drawImage 函数可以接受一个 canvas 元素作为它的参数,它将执行您想要的操作。

而不是做:

img = canvas.toDataURL();
ctx.drawImage(img, 0,0);

只是做:

ctx.drawImage(canvas, 0,0);

关于javascript - 递归图像处理(Canvas、HTML5、Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7219268/

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