2011-09-07 69 views
0

我一直在閱讀https://stackoverflow.com/questions/158756/what-is-the-best-image-manipulation-library並嘗試了一些圖書館,現在正在尋找什麼是最好的我們需要的投入。我將從描述當前的設置和問題開始。什麼圖像處理圖書館我應該使用

我們有一個系統,需要從大的原始圖像調整大小和裁剪大量的圖像。我們每天在2臺強大的服務器上處理50000多張圖像。今天我們使用來自WebSupergoo的ImageGlue,但我們完全不喜歡它,它很慢並且暫時掛起服務(它在另一個未解決的堆棧溢出問題中)。我們有一個線程化的Windows服務,它使用Microsoft ThreadPool在8臺核心機器上儘可能調整大小。

我已經嘗試過AForge,它進行得非常好,它加載速度更快,從來沒有墜毀或任何東西。但是我在幾張圖片上質量有問題。這是由於我使用了什麼算法可以調整。但想擴大我們的視野,看看這是否是正確的路。

這樣:

  • 它需要C#.NET和Windows服務運行。 (因爲我們不會改變其餘的服務,只有圖像處理)
  • 它需要很好地處理線程環境。
  • 我們非常需要它從今天開始的速度太慢。但是我們也想要高質量和小文件大小的圖像,因爲這些圖像稍後會顯示在網頁上,並且具有很多訪問者並且需要高質量。

因此,我們有很多要求能夠快速獲得上帝的品質,並且即使可以通過壓縮來調整,也可以保持檔次降低。

對使用​​什麼庫有任何意見或建議?

+0

我們結束了使用Leadtools – Swippen

回答

1

我明白,你想仍然使用C#,但提供了一種替代方案。

根據你正在做的工作量,最快的方式來操作圖像是完全在GPU上(這將減輕大部分的像素工作)。您可以與Managed C++的CUDA進行互操作,您可以從服務中調用該CUDA。或者使用DirectX表面和渲染目標(您可以擁有抗鋸齒功能以及所有高質量的開箱即用功能)。

但是,在做任何事情之前,確保您的工作負載由三線/雙線調整大小決定,而不是由圖像的編碼/解碼決定。順便說一句,你需要在每臺服務器上至少安裝一個nVidia顯卡,才能進行卸載(廉價的GTX 460會足夠)。

+0

感謝您的反饋!這確實是一個有趣的想法,將我的舊directx編碼搞清楚會很有趣。它最終可能會產生最快也可能最好的結果,但實施此解決方案需要太多時間。並且升級服務器。用一個新組件實現我的圖像處理界面不費力氣。如果它仍然太慢,我會記住這個解決方案,並且我們無法在另一個庫中得到一個帶有良好結果的快速解決方案。 – Swippen