Qualquer maneira de codificar um PNG mais rápido do que UIImagePNGRepresentation?
Estou gerando um monte de telhas paraCATiledLayer
. Leva cerca de 11 segundos para gerar 120 blocos em 256 x 256 com 4 níveis de detalhes em um iPhone 4S. A imagem em si cabe em 2048 x 2048.
Meu gargalo éUIImagePNGRepresentation
. Demora cerca de 0,10-0,15 segundos para gerar cada imagem de 256 x 256.
Eu tentei gerar vários ladrilhos em diferentes filas de fundo, mas isso só reduz para cerca de 9 a 10 segundos.
Eu também tentei usar o framework ImageIO com código como este:
- (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);
}
Enquanto isso produz arquivos PNG menores (win!), Leva cerca de 13 segundos, 2 segundos a mais que antes.
Existe alguma maneira de codificar uma imagem PNG deCGImage
Mais rápido? Talvez uma biblioteca que faz uso deNEON
Extensão ARM (iPhone 3GS +) comolibjpeg-turbo faz?
Existe talvez um formato melhor que o PNG para salvar blocos que não ocupam muito espaço?
A única opção viável que consegui criar é aumentar o tamanho do bloco para 512 x 512. Isso reduz o tempo de codificação pela metade. Não tenho certeza o que isso vai fazer para a minha visão de rolagem embora. O aplicativo é para iPad 2+ e suporta apenas iOS 6 (usando o iPhone 4S como linha de base).