Sto generando un mucchio di tessere per CATiledLayer
. Occorrono circa 11 secondi per generare 120 tessere a 256 x 256 con 4 livelli di dettaglio su un iPhone 4S. L'immagine stessa si adatta entro 2048 x 2048.Qualche modo per codificare un PNG più veloce di UIImagePNGRepresentation?
Il mio collo di bottiglia è UIImagePNGRepresentation
. Occorrono circa 0,10-0,15 secondi per generare ogni immagine 256 x 256.
Ho provato a generare più riquadri su diverse code di sfondo, ma questo riduce solo a circa 9-10 secondi.
Ho anche provato utilizzando il framework ImageIO con codice come questo:
- (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);
}
Mentre questo produce file PNG più piccoli (vincere!), Ci vogliono circa 13 secondi, 2 secondi più di prima.
C'è un modo per codificare un'immagine PNG da CGImage
più veloce? Forse una libreria che utilizza l'estensione ARM NEON
(iPhone 3GS +) come libjpeg-turbo?
C'è forse un formato migliore del PNG per il risparmio di piastrelle che non occupa molto spazio?
L'unica opzione valida che sono riuscito a ottenere è quella di aumentare le dimensioni della piastrella a 512 x 512. Questo riduce di due volte il tempo di codifica. Non sono sicuro di cosa farà alla mia vista di scorrimento. L'app è per iPad 2+ e supporta solo iOS 6 (utilizzando iPhone 4S come base di riferimento).