2009-09-14 64 views
1

我使用ImageMagick的在我的ASP.NET webproject當用戶visists一個網站,20個媒體項目使用的System.Diagnostics.Process通過命令行的ImageMagick在asp.net

產生通過的ImageMagick的命令行界面大拇指從數據庫中取出,並且對於每個的拇指圖像獲取生成,像這樣:

var thumb = media.GetThumb(100, 100); 

其開始從ImageMagick的

使用「轉換」命令然而的方法,所述性能可以更好。

我知道,緩存拇指是一個不錯的選擇,而這正是我要做的。

但是,我懷疑,爲每個未緩存的圖像啓動一個新的進程是相當昂貴的。任何更好像「重用」一個進程或保持imagemagick在內存中,並訪問此實例或不是什麼?

+1

我確信你可以通過內存/進程管理獲得更高級的內存,但我認爲你已經有了正確的方法,使用昂貴的操作並緩存結果。週期很便宜,只要你消除了每次請求發生的代價高昂的操作,而這些操作不必是那些應該在ASP.NET IMO中完成的主要優化。 – 2009-09-14 15:55:11

回答

0

由於生成縮略圖所需的時間不算太長,我現在只使用緩存解決方案。此外,我不想增加項目的複雜性 - 儘可能簡單。

但是對於未來的項目,我試圖評估是否可以在Application_Start事件中啓動一個後臺線程,該事件查詢數據庫中的10個圖像,生成他們的大拇指並繼續下一個10等等,直到沒有更多的圖像沒有縮略圖存在。這似乎是一個可行的方法,雖然我還沒有在生產中使用它。

1

嘗試ImageMagick.NET

也許最大的圖像處理API存在的.NET包裝,ImageMagick

雖然仍處於alpha, 它(或更早版本)可能會提供您需要的功能。 對source的簡要介紹只能看到很少的功能,但它可能是一個開始。

+0

感謝您的提示,我還不知道它。但是,圖書館似乎還沒有準備好生產。不過,這可能是未來的一種選擇。 – Max 2009-09-17 15:04:28