2011-07-17 35 views
5

Estoy trabajando en una aplicación para iOS usando PhoneGap. Me encontré con un problema molesto donde algunas de mis imágenes no se estaban cargando. Pensando que era un problema de caché, jugué intercambiando imágenes.¿Limitaciones del tamaño de la imagen en el safari móvil?

Finalmente descubrí que el problema tenía que ver con el alto de mi imagen. Después de todo un montón de prueba y error, descubrí que una imagen más alta que 7864px no se cargará en el simulador de iPad o el iPad. Se cargará bien en Safari. No es una limitación de tamaño de archivo ya que estos solo tienen un tamaño de 45k y estoy cargando imágenes de 700k de tamaño en cualquier otro lugar sin ningún problema.

¿Alguien ha topado con esto? No puedo encontrar restricciones documentadas en las dimensiones de la imagen dentro de Safari móvil. Si hay restricciones, conocerlas sería útil.

+0

Opera Mini muestra imágenes a máxima resolución. –

Respuesta

5

Para aplicaciones nativas, Apple dice que las imágenes más grandes que 2048x2048 1024x1024 are to be avoided y se deben desglosar en otras más pequeñas. El problema aquí no es el tamaño del archivo en el disco, sino el tamaño en la memoria: la imagen debe decodificarse y convertirse en una representación "plana".

Así que hagamos algunos cálculos matemáticos: supongamos una imagen de 5000x5000 píxeles, con RGB de 8 bits. Esto significa que cada píxel ocupa 3 bytes:

5.000 * 5.000 * 3 = 75.000.000 (aproximadamente 71,5 MiB)

por lo que ver su imagen aparentemente pequeño realmente se llena la memoria muy rápida. iOS ahora no puede tirar partes si está bajo presión de memoria, es la imagen completa o nada.

Su única solución es dividir la imagen en partes más pequeñas. iOS puede eliminar las imágenes que ya no son visibles desde la memoria (dudo que con una imagen tan grande que todas las partes estén visibles todo el tiempo).

+0

Parece que se está refiriendo a la representación de IU nativa. ¿Sería eso cierto para Mobile Safari también (PhoneGap)? Puedo trabajar con esa limitación, pero significa que necesito dejar de usar Sprites en mi CSS, que es algo que se recomienda en otros lugares. Así que todavía estoy un poco confundido. ;) –

+0

He citado la documentación de la aplicación nativa ya que no encontré nada mejor. Aún así, el problema es el mismo, ya sea con aplicaciones nativas o Safari: una imagen enorme ocupa grandes cantidades de memoria y el sistema operativo no puede purgar partes de ella (AFAIK). Pero si coloca una imagen enorme con muchas imágenes más pequeñas, no es problema purgar aquellas imágenes que no son visibles en este momento. Al menos eso es lo que Apple dice es cómo debemos hacerlo los desarrolladores nativos. – DarkDust

+0

¡por eso no puedo cargar el panorama de 13,000 píxeles de Wikipedia! – Ian

Cuestiones relacionadas