NSImageView 中的动画 GIF

发布于 2024-10-31 09:41:05 字数 536 浏览 6 评论 0原文

我使用 NSImageView 来显示大约 80 帧的动画 GIF,每帧长 20 毫秒。 NSImageView 可以“开箱即用”地显示 GIF 动画,但问题是它需要太多的 CPU,大约持续 10%(在我的核心 i5 处理器上)。 Instruments 显示它花费了大量的 CPU 时间来解码 GIF。

为了提高效率,我尝试了以下方法,但没有取得太大成功:

  • 将帧放入QTMovie中并播放(我的进程使用 4%,QTKitServer 进程使用另外 15%)播放电影)

  • 直接绘制到带有 CGContextDrawImage 的视图(~5% CPU 使用率) - 我没有导出 GIF 的帧,我只是从我周围的 30x30px .p​​ng 创建了一个 CGImageRef

我不知道还能尝试什么。子类化 NSImageView 并以某种方式缓存图像听起来是个好主意,但是,唉,我是 Cocoa 的初学者......任何想法都将不胜感激。谢谢!

I'm using an NSImageView to display an animated GIF with around 80 frames, each frame being 20ms long. NSImageView can display the GIF animation right 'out of the box', but the problem is that it needs too much CPU, around 10% continuously (on my core i5 proc). Instruments shows that it spends a lot of CPU time decoding the GIF.

To make it more efficient, I have tried the following without much success:

  • putting the frames inside a QTMovie and playing it (uses 4% for my process and another 15% for the QTKitServer process that plays the movie)

  • drawing directly to the view with CGContextDrawImage (~5% CPU usage) - I didn't export the GIF's frames, I just created a CGImageRef from a 30x30px .png I had lying around.

I don't know what else to try. Subclassing NSImageView and somehow caching the images sounds like a good idea but, alas, I'm a beginner in Cocoa... Any ideas would be much appreciated. Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文