2011-03-27 20 views
0

我有一些.png圖像,我希望能夠快速:與OpenGL相比,Python Image Library(PIL)ImageDraw Module有多快?

(a)從文件加載.png。 (b)在.png上繪製一些簡單的線條。 (c)獲取作爲http請求結果返回的結果圖像的內容(字節)。

這聽起來像PIL是一個很好的候選人用相對較少的代碼來做到這一點。然而,我試圖理解它的效率如何,尤其是當我在步驟(b)中有數千行繪製時。另一種方法是使用PyOpenGL,但在進入之前,我想了解PIL是否足夠快。

我打算問PIL是否在封面下使用了OpenGL。但是這可能是一個錯誤的問題,因爲我的理解是,爲了從PyOpenGL中獲得真正的速度優勢,我希望將我的行頂點提交爲NumPy數組。所以大概即使PIL使用OpenGL,當我進行單獨的PIL調用來繪製每一行時,我都會失去很多好處。

任何人在繪製大量基元時都有具體的PIL速度數據?

+0

要使用OpenGL,您需要一個OpenGL上下文。如果您計劃從無頭服務器使用此軟件(如http請求響應要求所暗示的),則這可能很困難。 – tkerwin 2011-03-27 02:35:42

+0

@tkerwin:根據操作系統的不同,獲取無頭環境的難度變化很大。希望@M卡茨會讓我們更多地瞭解環境。當然,人們總是可以創建一個隱藏窗口,但在某些環境中可能不會加速。 – 2011-03-27 02:40:30

+0

當然是對的,我也不確定,但我猜想如果加速,使用OpenGL會比PIL快,如果不是,則會減慢。 – tkerwin 2011-03-27 02:46:32

回答

2

「在.png上繪製一些簡單的線條」不是一個計算密集型任務。

這看起來不太適合GPU,因爲它們更適合更復雜的任務。你必須認識到,圖像最初被加載到RAM上,使得你的工作將這些數據發送到GPU內存,然後將其恢復。根據圖像的大小,該操作會消耗幾毫秒,這可能會更好地用於CPU處理。

如果GPU的算術強度很高,那麼您的應用程序只能從GPU中受益。

+0

我認爲OpenGL和/或硬件加速的優點通常不僅僅是計算旋轉等,而是簡單地處理大量的繪圖操作(如果在一次調用中提交)。因此,即使沒有太多的「計算」,繪製萬點或小線會更快(比以更高級別的方式繪製)。沒有? – 2011-03-27 03:58:44

+0

目前還不清楚在GPU上這種大小的東西是否會更快。我鼓勵你編寫一個CPU應用程序來做到這一點。 – karlphillip 2011-03-27 04:13:25

+0

好的,謝謝。我會嘗試使用PIL進行一些實驗並回報我發現的內容... – 2011-03-27 04:34:13

相關問題