今日驚いたのは、JPEG で裏打ちさ[[JPEG backed CGImage] backed CALayer]
れた CGImage で裏打ちされた CALayer (つまり、.
元の CGImage を CGBitmapContext に描画することで、CGImage に裏打ちされた新しいビットマップを作成してみました。これにより、速度の問題が何とか解決されました。しかし、(3MB から) 6xMB のメモリ バーストが発生し、描画に 1 秒ほどかかりました。
元の CGImage からデコードされた画像を取得する方法はありますか? または、JPEG でバックアップされた CGImage を高速化する他の方法で、キャッシュ ビットマップを使用するだけで決して破棄しないように指示することはできますか?
CGDataProviderCopyData アプローチに切り替えました。少し高速ですが、iPhone 4S では 0.8 秒かかります。エンコードされたソースに裏打ちされた CALayer の背後にあるメカニズムは何なのだろうか? 画像が縮小され、画像のより多くの部分が表示されると遅くなります。しかし、画像全体が表示されている場合でも、1 fps ほど遅くはありません (実際には、10 fps のようなものを取得できます)。