私はCATiledLayer
のためのタイルの束を生成しています。 iPhone 4Sの4レベルのディテールで、256 x 256の120タイルを生成するのに約11秒かかります。画像自体は2048 x 2048に収まります。UIImagePNGRepresentationよりも速くPNGをエンコードする方法はありますか?
私のボトルネックはUIImagePNGRepresentation
です。すべての256 x 256画像を生成するには、約0.10〜0.15秒かかる。
私はさまざまなバックグラウンドキューで複数のタイルを生成しようとしましたが、これは約9-10秒にしかカットされません。
私はまた、このようなコードをImageIOでフレームワークを使用して試してみた:
- (void)writeCGImage:(CGImageRef)image toURL:(NSURL*)url andOptions:(CFDictionaryRef) options
{
CGImageDestinationRef myImageDest = CGImageDestinationCreateWithURL((__bridge CFURLRef)url, (__bridge CFStringRef)@"public.png", 1, nil);
CGImageDestinationAddImage(myImageDest, image, options);
CGImageDestinationFinalize(myImageDest);
CFRelease(myImageDest);
}
これは小さいPNGファイルを(勝つ!)生成するが、それは以前よりも2秒以上約13秒を取ります。
CGImage
のPNG画像を高速にエンコードする方法はありますか?おそらく、libjpeg-turboのようなNEON
ARM拡張機能(iPhone 3GS +)を使用するライブラリはありますか?
多くのスペースを消費しないタイルを保存するためにPNGよりも優れたフォーマットがありますか?
タイルサイズを512 x 512に増やすことができる唯一の実行可能なオプションは、エンコード時間を半減させます。しかし、それが私のスクロールビューに何をするか分からない。このアプリはiPad 2+用で、iOS 6(ベースラインとしてiPhone 4Sを使用)のみをサポートしています。それは、元の画像毎回を解凍したため