用于在服务器上组合图像流的可扩展解决方案

时间:2015-09-24 22:50:15

标签: image stream scalability

我正在Node.js上构建一个应用程序,用于提供图像合成(多个图像的叠加作为一个图像)。用户可以选择最多十个图像并将它们组合。我们希望快速提供所选图像的最终组合,而不将其保存到服务器上。我们认为使用流是最好的方法,因为阅读所有图像会耗尽我们的记忆。是否可以动态组合图像流并提供最终组合?

例如,这条管道是否可行:

  • 为数据库中的多个单独图像创建可读流到服务器。
  • 合并图像流
  • 将合成内容传递给用户

1 个答案:

答案 0 :(得分:1)

  

是否可以动态组合图像流并提供最终构图?

由于压缩算法的原因,我认为将图像作为流读取是不可能的。他们只是不是为了那样做而设计的。但是,如果您将图像以原始(位图)格式存储,但存储要求会显着增长。

关于可扩展性。可伸缩性基本上意味着 - 如果您为系统提供更多资源,可以完成更多工作。从这个意义上说,你的问题本质上是可扩展的。您所需要的只是部署更多的进程图像叠加实例,并将它们置于某种平衡器之外(如果您使用HTTP作为应用程序协议,这很容易)。

因此,我认为,可扩展性不应该是您系统的问题。但性能和效率可能是。

说到性能,图像叠加需要进行大量计算,因此应该有效地进行计算。因此,我建议您为您的平台找到一些可以有效地进行图像叠加的库,或者在您的平台中集成这种库的方法。例如,请考虑使用ImageMagicOpenCV

基本上,任何允许您对矩阵执行大规模并行操作的库都可以。因为这是图像叠加操作的本质。

另一种解决方案是使用GPU,因为这些设备专门针对这些类型的问题创建,并允许对图像执行大规模并行操作。当然,使用GPU是对应用程序部署方案的限制。所以在大多数情况下都不是一种选择。