此bounty已结束.回答此问题可获得+200声望奖励。赏金宽限期17小时后结束。erik希望引起更多的注意这个问题。
编者注(截稿后将删除):
不允许聊天GPT回答:请阅读Generative AI (e.g., ChatGPT) is banned
我有一个项目,其中有两个画布,需要结合起来,一个内p5和一个外。第一个是p5 js草图(通过createCanvas
创建,本质上是一个绘图应用程序),第二个是通过对Map服务的API调用自动创建的(我们的用例基本上是注解Map)。
作为参考,API查找具有特定ID的div
,然后附加新的canvas
元素。
我们想做的是将两个图像拼接成一个可保存的图像供用户使用。底层将来自MapAPI画布,顶层将是用户绘制的注解。
我们面临的问题是,自动创建的画布是作为webgl
上下文进入的,所以我们似乎无法使用任何基本方法来获取2d上下文中的画布数据。
有没有一种简单的方法可以做到这一点,我忽略了,或者我需要开始弄清楚如何解析出webgl数据到图形对象的pixels
数组?
下面的图片是我们到目前为止所拥有的-绘图工作,Map加载良好,现在我们只需要将它们保存为用户的完整图像。
x1c 0d1x的数据
1条答案
按热度按时间j5fpnvbx1#
将来自不同画布的内容与不同的上下文结合起来确实有点棘手,特别是当其中一个画布使用WebGL上下文时。由于p5.js对直接使用WebGL上下文的支持有限,与使用2D上下文的方式相同,因此您需要找到一种替代方法。
html2canvas
库是一个东西,它允许您捕获HTML元素的内容(包括画布)并将其转换为图像。通过这种方式,您可以捕获两个画布(p5.js和map API画布),将它们组合成单个图像,并将其作为下载链接提供给用户。1.将html2canvas库添加到项目中。
<script src="https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script>
个(Make确保p5.js画布和map API画布都已加载并在页面上可见。)
1.在按钮的事件处理函数中,您可以使用html2canvas库捕获两个画布,然后将它们合并为一个图像。完成后,您可以提供组合图像作为下载链接或执行任何其他您想要的操作。
事件处理函数的示例:
字符串
在本例中,将
your-p5-canvas-id
和your-map-api-canvas-id
分别替换为p5.js canvas和map API canvas的实际ID。