如何将画布状态保存到数据库?

5
我使用node.js、socket.io和html5 canvas构建了一个实时绘图应用程序。跟踪并广播每个鼠标点击移动的像素,以在其他计算机上显示绘图输入。我知道可以保存canvas的图像,但是这个canvas非常大(10000x10000+像素)。现在,当页面刷新时,所有的绘画都消失了(因为它只是通过socket发送的,没有保存任何内容)。我想将所有的canvas数据保存到数据库中,并在页面重新加载时重新写入,但数据量太大了。你会如何处理这个问题?
1个回答

1

在将它们发送到套接字时,您可以跟踪生成画布的点击和鼠标移动,并模拟它们以重建图像。


这将是每毫秒鼠标轨迹的每个像素的数据库条目。我不确定是否可能。我需要一种更有效的方法。 - sdfadfaasd
1
@Alley,你不必每毫秒提交每一个像素。你可以每隔几秒钟将它们写入数据库,如果你不介意一些质量损失,只保留每几个像素,并假设它们之间有连线(想象成点与点之间的连线)。 - Gabi Purcaru
嗯,你认为这在一个非常大的网格上甚至能够工作吗? - sdfadfaasd
1
@Alley,坦白说,我不知道。但这是我现在能想到的最好的办法,肯定比你目前拥有的其他选项更好。如果我找到更好的方法,我会告诉你的。 - Gabi Purcaru
好的,谢谢。我在想只有当我有某种动态加载时,它才能起作用,它只会加载屏幕上可见的内容,然后在滚动时加载其余内容。唯一的问题是这有点复杂。 - sdfadfaasd
但我们可以进行一个小计算:假设数据库每两秒钟被一堆像素(假设约100个,以类似SVG的标记编码--没有必要为每个像素单独创建一个条目)击中。我认为数据库可以承受这样的负载。 - Gabi Purcaru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接