2011-04-11 146 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,但我不认为它很难移植。