服务器端图像处理
我正在设计一个实时进行服务器端图像处理的web应用程序。处理任务包括对各种格式的图像应用不同的效果,如灰度,模糊,油画,铅笔素描等。我想使用我已经熟悉的java/servlets来构建它。我发现3个选项,服务器端图像处理
1)使用纯java成像库等的java.awt或http://www.jhlabs.com/ip/index.html 2)使用命令行工具,如瘸子/ ImageMagick的 3)用C具有Java绑定,C++图像库。
我不知道以上哪个选项是好的,以保持性能。它看起来像选项2)和3)是明智的表现,但我希望在我排除1)之前确定。我也听说gimp不能使用命令行运行,除非gtk或xwindows已经安装在服务器上。在服务器端运行它们时,会出现2)或3)的问题吗?
也请为此建议任何好的图像处理库。
Imagemagick或graphicsmagick很不错,你可以在大多数语言中找到它们的包装。
有用于图像处理好几个网上的例子和教程使用这些库太
我认为最好的做法是尝试选项1),如果速度不够快,请尝试选项2)。 我正在做一些我的应用程序的服务器端图像处理,我发现表现安静。
您应该查看Java2D软件包中的图像处理,并且尽可能在具有适当图形卡的Windows盒子上运行,因为Java可以使用它来加速Java2D操作。
@WizardOfOdds:如果我理解你是对的,我们需要让xvnc运行不应该无法运行的软件。但重点是,除非我们已经在托管的env上安装了xvnc,或者我们有足够的权利来安装xvnc,否则我们仍然无法在机器上运行需要完整图形环境的软件。我认为大多数托管环境都是如此(除了他们提供的专用服务器,您可以在其中完全控制)。纠正我,如果我错了。
我可以推荐使用Java库中的C++库和接口。 例如,一个选项是针对SSE指令和多核优化的Intel Performance Primitives。对于某些操作,这可能会更快。 IPP包含大部分基本操作的高度优化的功能,如:模糊,颜色转换,不同的滤镜等。
如果你拥有这些服务器,最好的选择是安装一个或两个巨大的GPU,并使用一些GPU加速库来进行图像处理。我自己在CUDA(图像旋转)中的简单图像处理代码,使用Geforce GTX-285(240核心GPU)在CPU上获得100倍以上的加速比。
我不会有我自己的服务器。我将不得不与托管服务提供商一起去。这对于安装可能需要root权限的软件来说有点复杂。
我部署使用jhlabs库像灰色缩放简单的图像处理操作的托管环境的Java Servlet和观察到的两件事情
- 没有遇到与无头的环境问题还没有。稍后当我尝试进行更复杂的图像处理操作时,可能会遇到此问题。
- 表现并不差。但我必须做负载测试,以确保在实际负载下性能是可以接受的。
我正在开发在线图像创建和处理的网络应用程序,名为rastaq(在http://rq-online.deesceha.de上的第一个预览)。它是一个Java Web应用程序,所有图形都基于Java 2D。它可以通过新的操作符和类型进行扩展。仔细观察,看看用新参数重新计算图像需要多长时间。
硬件平台是Intel四核8GB RAM机器。
有许多图像处理框架可以在Java服务器端应用程序(J2EE)中使用。
看看Marvin。您可以在J2SE应用程序中以相同方式执行项目setup。如果您使用的是Tomcat,请将Marvin文件夹复制到tomcat根目录并将marvin_version.jar添加到您的项目库中。您可以使用许多algorithms来处理服务器端的任何图像。
如有任何问题,请使用项目讨论组或Google关于如何在J2EE应用程序中使用Marvin。
的计算器后约在服务器端运行张建东: Adding MarvinFramework to a WebApp on Tomcat7
@spol:我使用ImageMagick的,因为许多卫星(因为之前的方式有任何形式的ImageMagick的Java API)。但请注意,这不是因为一台服务器“无头”,你无法伪装一个完整的图形环境:我有两台专用无头服务器,它们都非常高兴运行Xvnc,我可以启动任何*软件,甚至软件并不意味着在“无头”机器上运行。我的观点是:这不是因为一台服务器在物理上是“无头的”,它是无头的。我不建议*运行Xvnc/Gimp,只是说你可以运行任何程序服务器端。 – SyntaxT3rr0r 2010-04-04 01:30:14
(提示没有意义的*“一个服务器不应该运行Xvnc”*在3..2..1 ...由人没有意识到整个friggin像Xvnc这样的点是作为一个服务器;) – SyntaxT3rr0r 2010-04-04 01:32:53