今天令我感到惊讶的是,JPEG 支持的 CGImage 支持的 CALayer(我的意思是 a [[JPEG backed CGImage] backed CALayer]
)非常慢,以至于对于 8MP 的照片,它感觉那里没有 GPU。
我尝试通过将原始 CGImage 绘制到 CGBitmapContext 中来创建一个新的位图支持 CGImage,这以某种方式解决了速度问题。但它带来了 6xMB 的内存爆发(从 3MB 开始)并且需要 1 秒左右的时间来完成绘图。
有没有办法从原始 CGImage 中获取解码图像?或者其他方法可以让 JPEG 支持的 CGImage 更快,也许告诉它只使用缓存位图而不是丢弃它?
我切换到 CGDataProviderCopyData 方法。快一点,但在 iPhone 4S 上仍然需要 0.8 秒。我开始想知道由编码源支持的 CALayer 背后的机制是什么?当图像缩小并且图像的更多部分被显示时,它会变慢。但即使显示整张图片也不会像 1fps 那样慢(实际上我仍然可以得到 10fps 之类的东西)。