2010-04-03 77 views
1

我正在設計一個實時進行服務器端圖像處理的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)的問題嗎?

也請爲此建議任何好的圖像處理庫。

+0

@spol:我使用ImageMagick的,因爲許多衛星(因爲之前的方式有任何形式的ImageMagick的Java API)。但請注意,這不是因爲一臺服務器「無頭」,你無法僞裝一個完整的圖形環境:我有兩臺專用無頭服務器,它們都非常高興運行Xvnc,我可以啓動任何*軟件,甚至軟件並不意味着在「無頭」機器上運行。我的觀點是:這不是因爲一臺服務器在物理上是「無頭的」,它是無頭的。我不建議*運行Xvnc/Gimp,只是說你可以運行任何程序服務器端。 – SyntaxT3rr0r 2010-04-04 01:30:14

+0

(提示沒有意義的*「一個服務器不應該運行Xvnc」*在3..2..1 ...由人沒有意識到整個friggin像Xvnc這樣的點是作爲一個服務器;) – SyntaxT3rr0r 2010-04-04 01:32:53

回答

2

Imagemagick或graphicsmagick很不錯,你可以在大多數語言中找到它們的包裝。

有用於圖像處理好幾個網上的例子和教程使用這些庫太

0

我認爲最好的做法是嘗試選項1),如果速度不夠快,請嘗試選項2)。 我正在做一些我的應用程序的服務器端圖像處理,我發現表現安靜。

0

您應該查看Java2D軟件包中的圖像處理,並且儘可能在具有適當圖形卡的Windows盒子上運行,因爲Java可以使用它來加速Java2D操作。

0

@WizardOfOdds:如果我理解你是對的,我們需要讓xvnc運行不應該無法運行的軟件。但重點是,除非我們已經在託管的env上安裝了xvnc,或者我們有足夠的權利來安裝xvnc,否則我們仍然無法在機器上運行需要完整圖形環境的軟件。我認爲大多數託管環境都是如此(除了他們提供的專用服務器,您可以在其中完全控制)。糾正我,如果我錯了。

1

我可以推薦使用Java庫中的C++庫和接口。 例如,一個選項是針對SSE指令和多核優化的Intel Performance Primitives。對於某些操作,這可能會更快。 IPP包含大部分基本操作的高度優化的功能,如:模糊,顏色轉換,不同的濾鏡等。

2

只是爲了使事情複雜化,GIMP有一個API和一個Java包裝器:JGIMP

0

如果你擁有這些服務器,最好的選擇是安裝一個或兩個巨大的GPU,並使用一些GPU加速庫來進行圖像處理。我自己在CUDA(圖像旋轉)中的簡單圖像處理代碼,使用Geforce GTX-285(240核心GPU)在CPU上獲得100倍以上的加速比。

0

我不會有我自己的服務器。我將不得不與託管服務提供商一起去。這對於安裝可能需要root權限的軟件來說有點複雜。

我部署使用jhlabs庫像灰色縮放簡單的圖像處理操作的託管環境的Java Servlet和觀察到的兩件事情

  1. 沒有遇到與無頭的環境問題還沒有。稍後當我嘗試進行更復雜的圖像處理操作時,可能會遇到此問題。
  2. 表現並不差。但我必須做負載測試,以確保在實際負載下性能是可以接受的。
0

我正在開發在線圖像創建和處理的網絡應用程序,名爲rastaq(在http://rq-online.deesceha.de上的第一個預覽)。它是一個Java Web應用程序,所有圖形都基於Java 2D。它可以通過新的操作符和類型進行擴展。仔細觀察,看看用新參數重新計算圖像需要多長時間。

硬件平臺是Intel四核8GB RAM機器。

0

有許多圖像處理框架可以在Java服務器端應用程序(J2EE)中使用。

看看Marvin。您可以在J2SE應用程序中以相同方式執行項目setup。如果您使用的是Tomcat,請將Marvin文件夾複製到tomcat根目錄並將marvin_version.jar添加到您的項目庫中。您可以使用許多algorithms來處理服務器端的任何圖像。

如有任何問題,請使用項目討論組或Google關於如何在J2EE應用程序中使用Marvin。

的計算器後約在服務器端運行張建東: Adding MarvinFramework to a WebApp on Tomcat7