服务器端图像处理

时间:2010-04-03 18:29:30

标签: java image-processing image-manipulation

我正在设计一个实时进行服务器端图像处理的Web应用程序。处理任务包括在各种格式的图像上应用不同的效果,如灰度,模糊,油画,铅笔素描等。我想使用我已经熟悉的java / servlets构建它。我找到了3个选项,

1)使用纯java映像库,如java.awt或http://www.jhlabs.com/ip/index.html 2)使用Gimp / ImageMagick等命令行工具 3)使用具有java绑定的c,c ++图像库。

我不知道上述哪个选项可以保持良好的性能。看起来选项2)和3)表现良好,但我想在我排除1)之前确定。我还听说gimp无法使用命令行运行,除非服务器上已经安装了gtk或xwindows。在运行服务器端时,2)或3)会出现这样的问题吗?

另外,请为此目的建议任何好的图像处理库。

11 个答案:

答案 0 :(得分:2)

Imagemagick或graphicsmagick非常好,您可以在大多数语言中找到它们的包装。

使用这些库的图像操作也有很多在线示例和教程

答案 1 :(得分:2)

只是为了使事情复杂化,GIMP有一个带有Java包装器的API:JGIMP

答案 2 :(得分:1)

我可以建议使用C ++库和Java接口。 例如,一种选择是Intel Performance Primitives,它针对SSE指令和多核进行了优化。对于某些操作,这可以快得多。 IPP包括针对大多数基本操作的高度优化的功能,如:模糊,颜色转换,不同的滤镜等。

答案 3 :(得分:0)

Java在无头环境中会遇到类似的问题Using Headless Mode in the Java SE Platform不可用。

答案 4 :(得分:0)

我认为最好的办法是尝试选项1),如果速度不够快,请尝试选项2)。 我正在我的一些应用程序中进行服务器端图像处理,我发现这些表现很安静。

答案 5 :(得分:0)

您应该查看Java2D软件包中的图像处理,如果可能的话,在具有合适图形卡的Windows机器上运行,因为Java可以使用它来加速Java2D操作。

答案 6 :(得分:0)

@WizardOfOdds:如果我理解你的话,我们需要让xvnc运行不应该无头的软件。但问题是,除非我们已经在托管环境中使用xvnc或者我们有足够的权限安装xvnc,否则我们仍然无法运行需要在机器上使用完整图形环境的软件。我认为大多数托管环境都是如此(除了他们提供完全控制的专用服务器)。如果我错了,请纠正我。

答案 7 :(得分:0)

如果您拥有服务器,最好的选择是安装一个或两个大型GPU,并使用一些GPU加速库来进行图像处理。 在我自己的CUDA(图像旋转)中的简单图像处理代码中,使用Geforce GTX-285(240核GPU)在CPU上获得超过100倍的加速

答案 8 :(得分:0)

我不会拥有自己的服务器。我将不得不与托管服务提供商一起去。这使得在安装可能需要root权限的软件时会有点复杂。

我使用jhlabs库在托管环境中部署了java servlet,用于简单的图像处理操作,如灰度缩放和观察2件事

  1. 尚未遇到无头环境的问题。当我尝试进行更复杂的图像处理操作时,可能会在以后发现这个问题。
  2. 表现还不错。但我必须进行负载测试,以确保在实际负载下性能可以接受。

答案 9 :(得分:0)

我正在开发一个用于在线图像创建和处理的Web应用程序,称为rastaq(http://rq-online.deesceha.de上的第一个预览)。它是一个Java Web应用程序,所有图形都基于Java 2D。它可以通过新的运算符和类型进行扩展。四处游看,看看用新参数重新计算图像需要多长时间。

硬件平台是Intel四核,8GB RAM机器。

答案 10 :(得分:0)

您可以在Java服务器端应用程序(J2EE)中使用许多图像处理框架。

看看Marvin。您可以在J2SE应用程序中以相同的方式setup项目。如果您使用的是Tomcat,请将Marvin文件夹复制到tomcat根目录中,并在项目库中添加marvin_version.jar。您可以使用许多algorithms处理服务器端的任何图像。

如果遇到任何问题,请使用项目讨论组或Google,了解如何在J2EE应用程序中使用Marvin。

关于在服务器端运行Marvin的stackoverflow帖子: Adding MarvinFramework to a WebApp on Tomcat7