JPEG "progressivo": Por que muitos sites evitam renderizar JPEGs dessa maneira? Prós e contras?

39

Quando as imagens JPEG são usadas por uma página da web, elas geralmente são renderizadas de cima para baixo ... mas também podem ser renderizadas usando um modo chamado JPEG progressivo , onde a imagem começa em tamanho real , mas embaçada , e fica mais nítida com passes sucessivos, até que esteja totalmente carregado. O carregamento progressivo requer que a imagem tenha sido salva dessa maneira.

Por que mais sites não usam JPEG progressivo? Quais são as desvantagens? É simplesmente uma falta de suporte a ferramentas ou esses arquivos são de alguma forma inferiores às imagens JPEG tradicionais renderizadas de cima para baixo?

Chris W. Rea
fonte
2
O que aconteceu com os gifs entrelaçados também?
7
Eles eram um grande construtor de suspense em cerca de 1990 filmes, esperando para que a imagem de carga, oh seu um pouco menos blocos, ok quase podemos ver a assassinos rosto ... BAM [corte à sequência de acção dramática]
Mark Henderson
11
Gosto do algoritmo de zoom infinito aprimorado usado no Blade Runner.
11897 Chris W. Rea
3
@ Chris, isso não é nada comparado ao software em Red Dwarf .
22411 Peter
@PeterTaylor Isso é incrível :-)
Chris W. Rea

Respostas:

14

O JPEG progressivo tem suporte para dispersão de imagens desde o início. A página da Wikipedia em JPEG diz:

No entanto, os JPEGs progressivos não são tão amplamente suportados, [citação necessário] e até mesmo alguns softwares que os suportam (como versões do Internet Explorer antes do Windows 7) [12] somente exibem a imagem após o download completo.

NB A primeira declaração não possui fonte e a fonte da segunda não diz necessariamente que isso é suportado apenas no Windows 7.

Não me lembro quando evitei o JPEG progressivo, mas o problema mais recente foi que os analisadores de imagem no Flash (que podem carregar PNGs, GIFs e JPEGs) também não podem carregar o JPEG progressivo ( link atualizado no arquivo da Internet ) .

artlung
fonte
Mas usar o Flash é mau! ;-)
Marco Demaio 15/01
15

Eu costumo salvar imagens como progressivas.

Eu nunca experimentei ou ouvi falar de inconvenientes ou problemas de renderização . E mesmo que um navegador muito antigo possa não render o efeito progressivo, ele ainda renderiza a imagem, por isso não é um grande problema.

As imagens JPEG progressivas geralmente são menores em tamanho que a mesma imagem sem progressiva .

Por exemplo, uma imagem JPG de 8K (qualidade máxima) pode facilmente se tornar uma qualidade ainda máxima de 6K quando a progressiva é adotada e sem perder um pixel de definição.

Além disso, com editores de imagem como o Photoshop, salvar uma imagem como JPG progressivo não leva nada (é apenas uma caixa de seleção na janela que aparece ao usar o comando "Salvar como"), então eu costumo fazer isso.

Marco Demaio
fonte
7
De fato, yuiblog.com/blog/2008/12/05/imageopt-4 descobriu que 94% dos JPEGs maiores que 10K compactam melhor (menor) quando progressivos (embora seja diferente para arquivos pequenos, 75% dos JPEG menores que 10K melhor sem modo progressivo). Portanto, geralmente é uma boa idéia salvar JPEGs grandes como progressivos.
31712 John Mellor
11
Eu concordo com John, se você reduzir a qualidade da qualidade máxima para muito alta (80% -90%) ou menor, verá que o progressivo não produz mais um tamanho menor.
31812 joelpittet
11
Você não pode ter certeza de que as imagens 6K e 8K são da mesma qualidade. É a configuração máxima e a redução será invisível. Eu suspeito que o arquivo menor será mais com perdas. Não há como o algoritmo progressivo ser 25% mais eficiente. Se for o caso, deve ser menos eficiente porque adiciona uma camada de separação aos dados compactados correlacionados.
Zdenek
6

Artlung abordou algumas considerações de suporte, mas também há o fato de que isso não importa muito na maioria das vezes. O ponto importante da pergunta é "até que esteja totalmente carregado". O formato progressivo não é um detalhe estético que faz a imagem desfocar, é funcional:

Se uma imagem é grande o suficiente (pelo tamanho do arquivo) que demorar um pouco para download, em seguida, você verá a progressão.
Mesmo que todos os JPEG em todos os lugares sejam salvos como progressivos, na conexão comum atual acelera a esmagadora maioria das imagens que você encontrará, não são grandes o suficiente para que você possa ver o efeito em um grau significativo. Essa foi uma ótima idéia quando todos usavam modems de telefone lento, mas é cada vez mais uma curiosidade de aplicação prática limitada além de sites que realmente exigem imagens muito grandes, como um fotógrafo exigente ou algo assim.

O mesmo vale para GIFs entrelaçados, já que alguém os usou nos comentários.

Existe um fator potencial de público aqui, digamos, se você considerar países com uma infraestrutura de rede menos desenvolvida, onde eles podem obter velocidades significativamente mais lentas, mas não posso falar sobre isso. Eu podia vê-los como possivelmente tendo algum aplicativo para navegação móvel, mas voltamos ao suporte irregular do recurso.

Su '
fonte
11
Eu acho que o celular é realmente uma grande consideração aqui - acho que o novo smartphone é compatível; e vai tornar a navegação experiência em 3G ou velocidades mais lentas muito melhor - se você ver imagens que são carregamento irrelevante, você pode deixar antes de você perder mais tempo ou dinheiro
Baumr
Um navegador móvel pode ter uma configuração para exibir apenas a primeira ou a segunda passagem de um JPEG progressivo por padrão. Isso economizará dados e proporcionará uma experiência de navegação mais rápida.
Sun
Baumr: Não, o custo da CPU é muito alto; Na verdade, meu telefone nem sequer parcialmente desenha uma imagem normal, aguarda a carga completa antes mesmo de ser exibido.
Zdenek
sunk818: Embora teoricamente possível, seria um hack de camada cruzada. Você precisaria analisar o JPEG na parte TCP da pilha e interromper a transferência mais cedo ... Terrível. E também quebraria o pipelining. E a maioria das bibliotecas JPEG se recusaria a trabalhar com esse arquivo, então você também teria que usar um hack de homebrew! Apenas não.
Zdenek
3

O Google usa o carregamento progressivo de suas imagens em images.google.com Primeiro, elas esticam o polegar para visualizar as dimensões e depois carregam a imagem original. Eu acho que é uma boa prática. Assim como o JPEG progressivo

Themetis
fonte
Eu também faço isso. E minha solução é ainda melhor porque o Google carrega a imagem completa oculta enquanto eu a corta progressivamente na versão de baixa qualidade.
Zdenek
2

A renderização progressiva (gif / jpeg) era para os bons velhos tempos da Internet, onde os servidores eram lentos e a transferência final de dados da milha era feita em um rastreamento pelo POTS. Ninguém perde mais tempo com isso.

Tantos da audiência do meu site é de banda larga que não serve para nada além de um desvanecimento mínimo em uma imagem muito grande (embora em um cabo de 8 MB, dificilmente seja perceptível). Se o seu público ainda estiver no telefone dial-up, convém se preocupar com isso.

E, como é apontado nos comentários abaixo, o que é antigo é novo e a nova velocidade de transferência final de milha ainda é um problema para a rede de telefonia móvel e o acesso via satélite devido a problemas de velocidade ou latência do link. Portanto, preste atenção ao seu público e reimplemente-o para uma melhor experiência do usuário onde você precisar.

Fiasco Labs
fonte
3
Você está negligenciando as conexões 3G móveis - elas podem ser lentas; vai depender se as pessoas sobre os visitar o seu site, mas o mercado e uso está realmente crescendo em geral
Baumr
11
O JPEG progressivo também é bom para países insulares onde a largura de banda é limitada e a latência é alta.
Sun
Mas a renderização progressiva ainda não deve ser evitada.
Bhavesh Gangani
Sim, é menos em qual região do mundo hoje em dia, se você estiver em 2G ou 3G. Um usuário da Barundi acabou de carregar uma página com 3-8s globalmente em um desktop com fio completo nos 115s a partir de uma conexão móvel 2G. Ainda pode ser um mundo lento no celular.
ClearCrescendo
60% das conexões do Chrome são 2G - Chrome Dev Summit 2016.
Thomas McCabe 18/16
1

Para sites como a Wikipedia que realmente renderizam suas próprias miniaturas em tempo real, há uma consideração adicional: todos os algoritmos para criar JPEGs progressivos exigem mais memória e ciclos de CPU. Quando os arquivos originais são grandes o suficiente, isso cria problemas.

trlkly
fonte
0

Muitas bibliotecas não oferecem isso, ou não são por padrão. Mas essa não é a razão. Eu administro um site que oferece imagens e odeio os JPEGs progressivos. Por quê? Porque o algoritmo usado neles é pior que o meu! Eu uso a mesma técnica do Google, além de sobrepor uma miniatura média sobre a pequena. Dessa forma, o usuário obtém quase a qualidade total instantaneamente em qualquer conexão, não importa o tamanho do original. Os arquivos progressivos ficam muito irregulares, estragando esse efeito.

A sobreposição de miniaturas é a maneira de fazer isso.

Zdenek
fonte
0

O JPEG progressivo funciona no Chrome, Firefox e IE 9+. Eu acho que abrange a maioria dos navegadores usados ​​hoje para usar a web.

O JPEG progressivo fornece uma melhor experiência ao usuário em muitas situações. Eu gosto de ver progressivo ao visitar um site lento (país da ilha, efeito slashdot, pico de tráfego etc.). Não preciso ver a qualidade total imediatamente. Uma ideia inicial da imagem costuma ser boa o suficiente. Me incomoda mais ver uma imagem lenta de cima para baixo. Isso me lembra os dias modernos de 300 bauds de download de arte ASCII.

Dom
fonte