JPEG “progresivo”: ¿Por qué muchos sitios web evitan renderizar JPEG de esa manera? ¿Pros contras?

39

Cuando las imágenes JPEG son utilizadas por una página web, generalmente se representan de arriba a abajo ... pero también se pueden representar usando un modo llamado JPEG progresivo , donde la imagen comienza a tamaño completo , pero borrosa , y luego se vuelve más nítida con Pases sucesivos, hasta que esté completamente cargado. La carga progresiva requiere que la imagen se haya guardado de esa manera.

¿Por qué no más sitios web usan JPEG progresivo? ¿Cuáles son los inconvenientes? ¿Es simplemente una falta de soporte de herramientas, o estos archivos son de alguna manera inferiores a las imágenes JPEG renderizadas de arriba hacia abajo tradicionales?

Chris W. Rea
fuente
2
¿Qué pasó con los gifs entrelazados también?
77
Eran un gran creador de suspenso en las películas de alrededor de 1990, esperando que se cargara la imagen, oh, es un poco menos bloqueado, ok, casi podemos ver la cara de los asesinos ... BAM [corte a secuencia de acción dramática]
Mark Henderson
1
Me gusta el algoritmo de acercamiento infinito mejorado utilizado en Blade Runner.
Chris W. Rea
3
@ Chris, eso no es nada comparado con el software en Red Dwarf .
Peter Taylor
@PeterTaylor Eso es increíble :-)
Chris W. Rea

Respuestas:

14

JPEG progresivo ha tenido soporte de dispersión desde su inicio. La página de Wikipedia en JPEG dice:

Sin embargo, los archivos JPEG progresivos no son tan compatibles [cita requerida] e incluso algunos programas que sí los admiten (como las versiones de Internet Explorer anteriores a Windows 7) [12] solo muestran la imagen después de que se haya descargado por completo.

NB La primera declaración no tiene fuente, y la fuente de la segunda no dice necesariamente que esto solo sea compatible con Windows 7.

No recuerdo cuándo evité el JPEG progresivo por primera vez, pero el problema más reciente fue que los analizadores de imágenes en Flash (que pueden cargar PNG, GIF y JPEG) tampoco pueden cargar JPEG progresivo ( Enlace actualizado en el archivo de Internet ) .

artlung
fuente
¡Pero usar Flash es malo! ;-)
Marco Demaio
15

Usualmente guardo imágenes como progresivas.

Nunca he experimentado o escuchado de inconvenientes o problemas de renderizado . E incluso si algún navegador muy antiguo podría no generar el efecto progresivo, finalmente representará la imagen, por lo que no es un gran problema.

Las imágenes JPEG progresivas suelen tener un tamaño más pequeño que la misma imagen sin progresivo .

Por ejemplo, una imagen JPG de 8K (calidad máxima) podría convertirse fácilmente en 6K (calidad máxima) cuando se adopta progresiva y sin perder un píxel de definición.

Además, con editores de imágenes como Photoshop, guardar una imagen como JPG progresivo no toma nada (es solo una casilla de verificación en la ventana que aparece cuando se usa el comando "Guardar como"), por lo que generalmente lo hago.

Marco Demaio
fuente
77
De hecho, yuiblog.com/blog/2008/12/05/imageopt-4 descubrió que el 94% de los archivos JPEG más grandes que 10K se comprimen mejor (más pequeños) cuando son progresivos (aunque es diferente para archivos pequeños, ya que el 75% de los archivos JPEG más pequeños que 10K se comprimen mejor sin modo progresivo). Por lo tanto, generalmente es una buena idea guardar archivos JPEG grandes como progresivos.
John Mellor
1
Estoy de acuerdo con John, si reduce la calidad de la calidad máxima a muy alta (80% -90%) o inferior, verá que progresivo ya no produce un tamaño más pequeño.
joelpittet
1
No puede estar seguro de que las imágenes de 6K y 8K sean de la misma calidad. Es la configuración máxima y la reducción será invisible. Sospecho que el archivo más pequeño tendrá más pérdidas. No hay forma de que el algoritmo progresivo pueda ser un 25% más eficiente. En todo caso, debería ser menos eficiente porque agrega una capa de separación a los datos comprimidos correlacionados.
Zdenek
6

Artlung cubrió algunas consideraciones de soporte, pero también está el hecho de que simplemente no va a importar la mayor parte del tiempo. Lo importante en la pregunta es "hasta que esté completamente cargado". El formato progresivo no es un detalle estético que hace que la imagen se vea borrosa, es funcional:

Si una imagen es lo suficientemente grande (por tamaño de archivo) que tome un tiempo para descargar, a continuación, verá la progresión.
Incluso si cada JPEG en todas partes se guardara como progresivo, a las velocidades de conexión comunes actuales, la abrumadora mayoría de las imágenes que encontrará no son lo suficientemente grandes como para ver el efecto en un grado significativo. Esta fue una gran idea cuando todos usaban módems de teléfono lentos, pero es cada vez más una curiosidad de la aplicación práctica limitada más allá de los sitios que realmente requieren imágenes muy grandes como un fotógrafo exigente o algo así.

Lo mismo ocurre con los GIF entrelazados, ya que alguien los agregó en los comentarios.

Aquí hay un factor de audiencia potencial, digamos si considera países con una infraestructura neta menos desarrollada donde pueden obtener velocidades significativamente más lentas, pero no puedo hablar de eso. Yo podía verlos como la posibilidad de tener alguna aplicación para la navegación móvil, pero luego volver bucle para el apoyo irregular para la función.

Su '
fuente
1
Creo que el móvil es realmente una gran consideración aquí, supongo que los nuevos teléfonos inteligentes lo admiten; y hará que la experiencia de navegación en 3G o velocidades más lentas sea mucho mejor: si ve imágenes que son irrelevantes, puede irse antes de perder más tiempo o dinero
Baumr
Un navegador móvil podría tener una configuración para mostrar solo el primer o segundo paso de un JPEG progresivo de forma predeterminada. Esto ahorrará datos y proporcionará una experiencia de navegación más rápida.
Dom
Baumr: No, el costo de la CPU es demasiado alto; mi teléfono en realidad ni siquiera dibuja parcialmente una imagen normal, espera la carga completa antes de mostrarlo.
Zdenek
sunk818: Si bien es teóricamente posible, sería un hack de capas cruzadas. Tendría que analizar el JPEG en la parte TCP de la pila e interrumpir la transferencia antes ... Terrible. Y también rompería la tubería. Y la mayoría de las bibliotecas JPEG se negarían a trabajar con ese archivo, por lo que también tendría que usar un truco casero. Simplemente no.
Zdenek
3

Google utiliza la carga progresiva de sus imágenes en images.google.com. Primero, estiran el pulgar para obtener una vista previa de las dimensiones y luego cargan la imagen original. Creo que es una buena práctica. Al igual que JPEG progresivo

Themetis
fuente
Hago eso también. Y mi solución es aún mejor porque Google carga la imagen completa oculta mientras la hago caer progresivamente en la versión de baja calidad.
Zdenek
2

El renderizado progresivo (gif / jpeg) fue para los viejos tiempos de Internet, donde los servidores eran lentos y la transferencia de datos de la milla final se realizaba a través de POTS. Ya nadie pierde el tiempo en eso.

Tanta audiencia de mi sitio web está en banda ancha que no tiene otro propósito que un efecto de desvanecimiento mínimo en una imagen muy grande (aunque en un cable de 8 MB, apenas se nota). Si su audiencia todavía está en el teléfono de acceso telefónico, es posible que desee preocuparse por ello.

Y como se señala en los comentarios a continuación, lo viejo es nuevo y la nueva velocidad de transferencia de milla final sigue siendo un problema para la red de telefonía móvil y el acceso satelital debido a problemas de velocidad de enlace o latencia. Por lo tanto, preste atención a su audiencia y vuelva a implementarla para una mejor experiencia de usuario donde la necesite.

Laboratorios Fiasco
fuente
3
Estás descuidando las conexiones 3G móviles; pueden ser lentas; dependerá si las personas que visitan su sitio visitan el sitio, pero el mercado y el uso realmente están creciendo en general
Baumr
1
JPEG progresivo también es bueno para países insulares donde el ancho de banda es limitado y la latencia es alta.
Dom
Pero aún no se debe evitar el renderizado progresivo.
Bhavesh Gangani
Sí, es menos en qué región del mundo en estos días si estás en 2G o 3G. Acabo de hacer que un usuario de Barundi cargue una página de 3-8 segundos a nivel mundial desde un escritorio con cable completo en 115 segundos desde una conexión móvil 2G. Todavía puede ser un mundo lento en dispositivos móviles.
ClearCrescendo
El 60% de las conexiones de Chrome son 2G - Chrome Dev Summit 2016.
Thomas McCabe
1

Para los sitios como Wikipedia que realmente representan sus propias miniaturas sobre la marcha, hay una consideración adicional: todos los algoritmos para crear archivos JPEG progresivos requieren más memoria y ciclos de CPU. Cuando los archivos originales son lo suficientemente grandes, esto crea problemas.

trlyly
fuente
0

Muchas bibliotecas no lo ofrecen en absoluto, o no por defecto. Pero esa no es la razón. Dirijo un sitio web que ofrece imágenes y odio los archivos JPEG progresivos. ¿Por qué? ¡Porque el algoritmo utilizado en ellos es peor que el mío! Utilizo la misma técnica que Google, además superpongo una miniatura mediana sobre la pequeña. De esta forma, el usuario obtiene casi toda la calidad al instante en cualquier conexión, sin importar cuán grande sea el original. Los archivos progresivos se vuelven muy bloqueados, arruinando este efecto.

La superposición de miniaturas es la forma de hacerlo.

Zdenek
fuente
0

JPEG progresivo funciona en Chrome, Firefox e IE 9+. Creo que eso cubre la mayoría de los navegadores que se usan hoy para usar la web.

JPEG progresivo proporciona una mejor experiencia de usuario en muchas situaciones. Me gusta ver progresivo cuando visito un sitio lento (país insular, efecto slashdot, tráfico pico, etc.). No necesito ver la calidad completa de inmediato. Una idea inicial de la imagen suele ser lo suficientemente buena. Me molesta más ver una imagen de carga lenta de arriba a abajo. Me recuerda a los 300 días de módem en baudios de la descarga de arte ASCII.

Dom
fuente