Cuando se agrega un PNG a un proyecto de XCode iPhone, el compilador lo optimiza mediante pngcrush. Una vez en el dispositivo, el rendimiento de representación de la imagen es muy rápido.Realización de la optimización de iPhone en PNG descargados externamente
Mi problema es que mi aplicación descarga sus PNG desde una fuente externa en tiempo de ejecución (desde los álbumes web de Picasa, usando las API de datos de Google). Desafortunadamente, el rendimiento de estas imágenes es bastante malo. Cuando hago un renderizado personalizado en la parte superior de la imagen, parece 100 veces más lento que sus equivalentes almacenados internamente. Sospecho fuertemente que esto es porque las imágenes descargadas no han sido optimizadas.
¿Alguien sabe cómo puedo optimizar un archivo PNG descargado externamente en tiempo de ejecución en el iPhone? Estoy esperando una clase que haga esto. Incluso consideré agregar el código fuente de pngcrush a mi aplicación, lo que parece drástico. No he podido encontrar una respuesta decente yo mismo. Estaría muy agradecido por cualquier ayuda.
Gracias!
Actualización: Algunas personas han sugerido que puede deberse al tamaño del archivo, pero no es así. Durante mis pruebas, agregué un botón para alternar entre el uso de la versión incrustada y la versión descargada de exactamente el mismo archivo PNG. La única diferencia es que el embebido fue optimizado por 'pngcrush' durante la compilación. Esto hace un intercambio de bytes (de RGBA a BRGA) y la pre-multiplicación de alfa. (http://iphonedevelopment.blogspot.com/2008/10/iphone-optimized-pngs.html)
Además, el rendimiento al que me refiero no es la descarga, sino la prestación. Superpongo la pintura personalizada en la parte superior de la imagen (anulando el método drawRect de UIView), y es muy agitada cuando el fondo es la versión descargada, y muy suave cuando es la versión integrada (y por lo tanto optimizada). De nuevo, es exactamente el mismo archivo. La única diferencia es la optimización, que espero poder realizar en la imagen en tiempo de ejecución, en el dispositivo, después de descargarla.
Gracias de nuevo por la ayuda de todos!
no creo que debería estar tocando los datos originales mientras que la prestación PNG (después de la primera vez, por ejemplo), por lo que no se sabe muy ver cómo podría hacer una gran diferencia. Tal vez es el tamaño de la imagen, como sugiere Andrew Grant? –
Es importante tener en cuenta que el proceso pngcrush-equivalent debería ejecutarse, aunque solo una vez, por lo que habría un impacto en el rendimiento en ese punto –