2011-04-11 93 views
10

我使用的是NSImageView以顯示大約80幀的動畫GIF,每幀長度爲20ms。 NSImageView可以直接顯示GIF動畫,但問題在於它需要太多的CPU,連續10%左右(在我的核心i5處理器上)。 儀器顯示它花費了很多CPU時間來解碼GIF。NSImageView中的動畫GIF圖像

爲了使之更有效率,我曾嘗試沒有成功如下:

  • 把幀QTMovie內發揮它(使用4%,爲我的進程和另外15%播放電影QTKitServer過程)

  • CGContextDrawImage(〜5%的CPU使用率)直接與繪製的觀點 - 我沒有出口的GIF的框架,我就創建了一個CGImageRef從一個30x30px.png我躺在附近。

我不知道還有什麼可以嘗試的。子類化NSImageView並以某種方式緩存圖像聽起來像一個好主意,但是,唉,我是可可初學者...任何想法都將不勝感激。謝謝!

+2

你有沒有試過' - [NSImage setCacheMode:]'一個'NSImageCacheAlways'參數? – 2011-04-12 01:11:21

+2

按照你的建議,我重寫了我的NSImageView子類,結果CPU使用率大約是以前的一半。我已經檢查並使用我正在騎自行車穿過的單個GIF框架上的'setCacheMode:'並沒有任何明顯的區別。不過,您的意見對我有幫助,所以謝謝! – 2011-04-14 19:50:49

+0

你究竟是如何解決這個問題的?這是一個有趣的問題,我也試圖解決它。你在NSImageView子類中改變了什麼? – AlexQueue 2013-08-10 21:17:05

回答

-3

結賬this article作者:Raphael Schaad。這可能是因爲它沒有任何超級複雜的性能。 github repo看起來只是iOS,但我不認爲它很難移植。