Tengo una aplicación que mostrará un montón de imágenes en una presentación de diapositivas. Esas imágenes serán parte del paquete, con lo que se distribuye con la aplicación.

Todas las imágenes son fotografías o fotográfico, etc.

He leído que es preferible usar PNG como formato de imagen, pero al ver que el JPG versión será mucho más pequeño, yo prefiero estar usando eso.

Hay lineamientos que el formato a utilizar y en qué caso?

  • Quería añadir que las imágenes originales están todos en formato JPG ya si eso hace la diferencia.
InformationsquelleAutor Maverick | 2010-10-14

8 Comentarios

  1. 140

    PNG son de píxel perfecto (sin pérdida de calidad), y requieren muy poco extra de CPU de energía para mostrar. Sin embargo, los grandes Png puede tomar más tiempo para leer, desde el almacenamiento de más comprimidos de los formatos de imagen, y por lo tanto ser más lento para mostrar.

    JPG son más pequeños a la tienda, pero con pérdida (la cantidad depende del nivel de compresión), y para mostrar requiere de mucho más complicado que el algoritmo de decodificación. Pero el típico de compresión y la calidad de la imagen suele ser más que suficiente para las fotos.

    Uso JPG para las fotos y para nada grande, y PNG para cualquier cosa pequeña y/o diseñado para ser visualizado «pixel perfect» (por ejemplo, iconos pequeños) o como parte de un compuesto transparente de superposición, etc.

    • Yo todavía no he visto a ninguno de sus datos JPEG vs PNG vs iPNG decodificar el rendimiento. A veces, las más, en formato comprimido, es mejor debido a la reducción de I/O necesaria; no estoy seguro de cómo de rápido que el iPhone de la unidad flash. Y yo definitivamente no diría PNG descompresión requiere «muy poco» de la energía; de la Otra.archivo de arte parece ser cruda de mapa de bits de datos, presumiblemente debido a que la CPU/memoria de sobrecarga de PNG de descompresión es demasiado para que comúnmente se utilizan componentes de interfaz de usuario.
    • En mi proyecto actual, tenemos muy grandes los archivos png debido a un requisito de transparencia. La e / s de disco mucho mayor que el tiempo dedicado a la decodificación jpeg. Tenga en cuenta los archivos Png son comprimidos también, sólo que usando un algoritmo diferente.
    • Pensé en añadir una complementaria consejo para aquellos que están tratando de maximizar el rendimiento de imagen. SI usted tiene una buena compresión Jpg, se puede cargar el raw a JPG datos en NSData objetos de antemano (tal vez en una matriz o un diccionario), y construir el Jpg, el uso de UIImage:imageFromData cuando desee mostrar. El JPG de datos puede ser de 10-100 veces más pequeño que el de la imagen de mapa de bits de datos, pero permite obtener la (relativamente lenta) IO parte de la manera temprana. Obviamente tener cuidado con la cantidad de datos de la caché de/preload de esta manera.
    • He encontrado algunos datos sobre compersion veces: cocoanetics.com/2012/09/… parece, que el uso de png no es más rápido que el jpg 😉
  2. 20

    Apple optimiza las imágenes PNG que están incluidos en su aplicación para el iPhone paquete. De hecho, el iPhone utiliza un especial de codificación en el que el color bytes están optimizados para el hardware. XCode maneja este especial de codificación para usted cuando usted construye su proyecto. Así, hacen ver que beneficios adicionales para el uso de PNG en un iPhone aparte de su tamaño consideración. Por esta razón es definitivamente recomendable usar PNG para cualquiera de las imágenes que aparecen como parte de la interfaz (en una vista de tabla, etiquetas, etc).

    Para mostrar una pantalla completa de la imagen, como una fotografía que usted todavía puede obtener beneficios con PNG, ya que son sin pérdida de calidad y la calidad visual debe ser mejor que un JPG por no mencionar el uso de los recursos con la decodificación de la imagen. Usted puede necesitar a la disminución de la calidad de tus archivos JPG con el fin de ver un beneficio real en el tamaño del archivo, pero luego se está mostrando no es la óptima imágenes.

    Tamaño del archivo es sin duda un factor, pero hay otras consideraciones en juego así la hora de elegir un formato de imagen.

    • En mi punto de referencia Xcode optimización en realidad hizo archivos más lento, probablemente debido a e/S de disco, CPU no es el cuello de botella.
    • «Apple optimiza las imágenes PNG que están incluidos en su aplicación para el iPhone paquete» – ¿esto significa que el PNG que se descarga de forma dinámica no están optimizados?
    • No, Png descargados dinámicamente no están optimizados. La optimización es, básicamente, intercambiando el orden de los bytes de RGBA a BGRA, que es lo que el iPhone chip de gráficos utiliza internamente. Más info aquí: graphicsoptimization.com/blog/?p=259
  3. 11

    Hay una cosa importante es pensar con los archivos Png. Si un PNG que se incluye en su Xcode construir será optimizado para iOS. Esto se llama PNG crush. Si el PNG es descargado en tiempo de ejecución no será aplastado. Aplastado Png ejecutar sobre el mismo como el 100% de los Jpg. De menor calidad que los Jpg a funcionar mejor que los de mayor calidad en Jpg. Así que desde un punto de vista del rendimiento del más rápido al más lento que iba a ir de baja calidad JPG de alta calidad JPG, PNG Aplastado, PNG.

    Si usted necesita para descargar los archivos Png usted debe considerar la trituración de los archivos Png en el servidor antes de la descarga.

    http://www.cocoanetics.com/2011/10/avoiding-image-decompression-sickness/

  4. 8

    La Cocoanetics blog se ha publicado una buena comparativa del rendimiento de iOS de JPGs en varios niveles de calidad, y Png, con y sin aplastar.

    De su conclusión:

    Si es absolutamente necesario disponer de un canal alfa o de tener que ir con los archivos Png, a continuación,
    es recomendable instalar el pngcrush de la herramienta en el servidor web y
    tienen que procesar tus archivos Png. En casi todos los otros casos de alta calidad
    Jpeg combinar tamaños de archivo más pequeños (es decir, una transmisión más rápida) con
    una compresión más rápida y de representación.

    Resulta que los archivos Png son ideales para pequeñas imágenes que se utilizaría
    para los elementos de interfaz de usuario, pero no son razonables para el uso de cualquier
    pantalla de aplicaciones como catálogos o revistas. Allí usted desea
    para elegir una calidad de compresión de entre el 60 y el 80% dependiendo de su
    material de origen.

    En términos de conseguir todo para mostrar que se quiere aferrarse a
    UIImage instancias del cual se extrajo una vez porque aquellos que tienen una
    caché versión sin comprimir el archivo en ellos. Y donde no
    el visual pausa para una ampliación de la imagen para que aparezca en la pantalla, usted tendrá
    a fuerza de descompresión para un par de imágenes de antelación. Pero hay que tener en
    cuenta que estos se tome grandes cantidades de RAM y si son
    la exageración de ella que podría causar su aplicación para ser terminado. NSCache es un
    gran lugar para colocar utiliza con frecuencia las imágenes porque esto automáticamente
    cuida de desalojo de las imágenes cuando la memoria RAM se vuelve escaso.

    Es lamentable que no tenemos ninguna manera de saber si es o no un
    imagen todavía necesita descomprimir o no. También una imagen podría tener
    desalojada la versión sin comprimir, sin informar a nosotros como a este
    efecto. Que podría ser un buen Radar para subir en el Apple de los informes de errores
    sitio. Pero, afortunadamente, el acceso a la imagen como se muestra arriba no toma tiempo
    si la imagen ya está descomprimido. Por lo que sólo podría hacer que no
    sólo «justo a tiempo», sino también «por si acaso».

    • Exactamente, y JPEGMini y ImageOptim hace jpeg realmente pequeño!
  5. 7

    Sólo pensé en compartir un poco de la descompresión de los datos de rendimiento…

    Estoy haciendo algunos prototipos de 360 grados de visor – un carrusel donde el usuario puede girar a través de una serie de fotografías tomadas desde diferentes ángulos, para dar la impresión de ser capaz de girar suavemente un objeto.

    He cargado los datos de la imagen en una matriz de NSData de tomar e/s de archivo de la ecuación, pero crear NSImage sobre la marcha. Las pruebas a cerca de la velocidad máxima de fotogramas (~25 fps) y viendo en Instrumentos veo la app es claramente dependiente de CPU y hay alrededor de un 10% de aumento en la carga de la CPU mostrando ~275 kb png vs ~75 kb jpg.

    No puedo decir seguro, pero mi conjetura es el límite de la CPU es sólo a partir del programa general de ejecución y mover todos los datos en la memoria, sino que la imagen de la descompresión se realiza en la GPU. De cualquier manera y el JPG vs PNG rendimiento argumento mira a favor JPG, especialmente cuando los tamaños de archivo más pequeños (y por lo tanto menor tamaño de los objetos en la memoria, al menos en algunas partes de la cadena) es tomado en consideración.

    Por supuesto, cada situación es diferente, no hay sustituto para la prueba de…

    • La GPU no se puede descomprimir los archivos Png. El desinfle de formato se utiliza no es el adecuado para el tipo de paralelización de la GPU permite. Supongo JPG decodificación puede ser parcialmente con aceleración de la GPU, ya que hay espacio de color de conversión.
  6. 5

    He encontrado enormes diferencias en el rendimiento de la animación cuando se utiliza jpeg vs png. Por ejemplo, colocar tres de la pantalla-tamaño de los archivos jpeg de lado a lado en un UIScrollView y el desplazamiento horizontal sobre un iPhone4 resultados en gal y una completamente desagradable cecina de animación. Por la falta de transparencia png de las mismas dimensiones que el desplazamiento es suave. Yo nunca uso jpeg, incluso si la imagen es grande.

  7. 1

    Creo que si usted desea utilizar transparente, usted no tiene ninguna elección, excepto PNG. Pero, si su fondo es opaco ya, entonces usted puede utilizar JPG. Esa es la única diferencia que puedo ver

    • Este no aborda ninguna de las consideraciones de rendimiento de JPG vs PNG.

Dejar respuesta

Please enter your comment!
Please enter your name here