【问题标题】:Animation of NSImage gets lost after archiving it with NSKeyedArchiverNSImage 的动画在使用 NSKeyedArchiver 归档后会丢失
【发布时间】:2010-02-10 17:20:35
【问题描述】:

以下情况:

我有一个 NSObject 子类化对象的实例。它的属性之一是NSImage。实例化对象后,我使用NSKeyedArchiver 将其转换为数据,通过网络发送,使用NSKeyedUnarchiver 将其解压缩并在NSImageView 中显示图像(setAnimates:YES)。直到这里没有问题。图像可以显示在另一台机器上。现在的问题:
如果我发送动画 gif,它不会动画。我不知道为什么...任何想法为什么动画远离?谢谢!

更新

如果我在存档之前打开动画图像,NSImageView 会对其进行动画处理。问题可能是存档...

更新 2

我测试了整个工作流程,没有通过网络发送数据,只是再次归档和取消归档。我怀疑这是 NSKeyed(Un)Archiver 的问题。
动画会丢失。 但是如何防止这种情况发生呢?

【问题讨论】:

    标签: cocoa nsimage animated-gif nskeyedarchiver nsimageview


    【解决方案1】:

    我会简单地存档原始图像数据,而不是图像实例。

    【讨论】:

      【解决方案2】:

      默认情况下,NSImage 不保留原始源图像数据。可能发生的情况是NSImage 仅归档一帧的静态位图并丢弃原始内容。

      如果您调用[yourNSImageObject setDataRetained:YES],那么NSImage 应该保留原始数据(在本例中为动画 GIF)。我建议您在首次创建图像时尝试这样做,然后查看存档/取消存档时会发生什么。

      【讨论】:

      • 1) setDataRetained: 在 Mac OS X v10.6 中已弃用。 2)不幸的是它不起作用。 :-/ (动画还在迷路...)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      相关资源
      最近更新 更多