Um recente post de um membro do grupo do Facebook Pplware@Windows, pedindo dicas sobre a melhor forma de reduzir o tamanho de um ficheiro de imagem, serviu de inspiração para abordar este tema num artigo.
As dicas e os temas deste artigo são, evidentemente, simplificados para uma utilização corrente. Não vamos (pelo menos agora!) falar de formatos mais sofisticados, espaços de cor, suporte de camadas, ficheiros tipo RAW, etc. Depois de mostrarmos como reduzir e comprimir imagens hoje vamos aprender a poupar espaço com redução do tamanho do ficheiro e finalmente conhecer a história da Lena.
Poupar espaço com redução do tamanho do ficheiro
Uma estratégia alternativa – ou adicional – à compressão é a redução do tamanho real da imagem. Ou seja, as dimensões físicas da imagem e não apenas do ficheiro.
No seguimento do artigo anterior, reduzindo o tamanho para metade (a imagem passa a ter 2434×1726) e mantendo a qualidade em 95%, o ficheiro passa de imediato para 1,35 MB.
No caso desta imagem se destinar a ser usada num website, a estratégia de reduzir o seu tamanho ao mesmo tempo que aumentamos a compressão é a conjugação ideal, de forma a evitar criar um impacto negativo na velocidade a que o browser carrega a página Web onde ela eventualmente se encontre.
A redução simultânea da imagem para metade do tamanho com 75% da qualidade tem um impacto ainda mais dramático, com o ficheiro a ficar-se apenas pelos 750 KB e mantendo a qualidade aparente da imagem.
Lena, o JPEG e o JPEG 2000
Usámos uma fotografia de um monumento como referência de forma a demonstrar o impacto da compressão e da redução da dimensão no tamanho final do ficheiro. No entanto, talvez seja mais útil usarmos uma outra foto para melhor apreciarmos os resultados da compressão na qualidade.
Apresento-vos a Lena (ou Lenna), também conhecida como “The First Lady of the Internet”.
Não me vou alongar em explicações, mas os mais curiosos podem saber tudo sobre ela aqui:
A história é deliciosa. Mas o que nos interessa para o contexto deste artigo é que esta foto tem sido usada ao longo do tempo precisamente como referência para testes de qualidade de imagem.
Além disso, é pequena – quer em termos de dimensões físicas como em tamanho de ficheiro – pelo que as alterações mais significativas que através dela se demonstram são mesmo as dos efeitos do algoritmo JPEG na compressão de imagens.
Eis os resultados da compressão da imagem de referência com 95%, 50% e 25% da qualidade original através do Paint.net (da esquerda para a direita):
Se clicarem em cada uma das imagens é perfeitamente visível a diferença de qualidade em função da compressão.
Eis o que acontece com compressão extrema, de apenas 10% de qualidade (ou 90% de compressão):
A imagem com apenas 10% de qualidade é muito má. Contudo, continuamos a ter uma imagem que é visualmente bastante aproximada ao original e um ficheiro que tem apenas… 9KB! Para certas aplicações em que seja crucial este tipo de dimensão reduzida, a qualidade pode ser aceitável – é tudo uma questão de opções.
O ideal, claro, seria termos uma alternativa ao JPEG que oferecesse o mesmo nível de compressão de ficheiros mas pudesse manter uma maior qualidade face ao original. Acontece que isso é possível e uma das formas é o formato JPEG2000.
A ideia original, no início deste século, era a de que o JPEG2000 viesse a substituir o JPEG. Mas, tal como acontece muitas vezes no mundo digital, estamos perante uma tecnologia (o JPEG) que é “good enough”, especialmente num momento em que deixámos de precisar de tanta compressão – o preço por MB é (muito!) mais barato do que era há 10 ou 20 anos e as velocidades de transmissão também dispararam e baixaram de preço.
Mas é pena, porque o JPEG2000 é realmente muito mais eficaz e tem até uma variante de compressão sem perdas (“lossless”). Quando surgiu, no ano 2000 (daí o seu nome), houve fabricantes de câmaras digitais que chegaram a anunciar o suporte da norma, o que faria todo o sentido, numa altura em que os cartões de memória eram caríssimos e a sua capacidade se media normalmente em megabytes e não em gigabytes.
Até que ponto é que o JPEG200 é eficaz? A imagem seguinte (regravada em JPEG normal, para poder ser visualizada num browser) representa um ficheiro com apenas 7,66 KB mas comprimida com JPEG2000 através do Paint.net. Só para lembrar, ao lado está a imagem anterior de 9 KB (10% de qualidade) em JPEG:
Como podem ver, há muitas formas de esfolar um coelho – ou, neste caso, de comprimir uma imagem e reduzir o tamanho de um ficheiro.
Mas o ideal é experimentarem vocês mesmo. Partilhem nos comentários os resultados das vossas experiências. Ficam aqui os links para o software e as imagens usadas:
- Paint.net
- Plugin do Paint.net para PSD (Photoshop)
- Plugin do Paint.net para JPEG2000
- Suporte JPEG2000 para browsers
- Ficheiro ZIP com todas as imagens originais usadas neste artigo: (46 MB)
Mitos e curiosidades do formato JPEG
Abrir e fechar estraga a foto?
Um mito persistente é o de que simplesmente abrir e fechar um ficheiro JPEG provoca a degradação da sua qualidade. Isto não é verdade e basta pensarmos que, se assim fosse, os JPEGs em páginas Web rapidamente desapareceriam, dada a quantidade de pessoas que os visualizam! O que é verdade – e está provavelmente na origem do mito – é que abrir um JPEG, editá-lo (alterando o que quer que seja na imagem) e depois voltar a gravá-lo, degrada efetivamente a qualidade. Contudo, se isto acontecer apenas algumas vezes e as definições de compressão não forem muito agressivas, a diferença na qualidade será impercetível.
O JPEG com qualidade de 100%.
Os programas de edição de imagem (e o Paint.net não é exceção) têm definições de compressão/qualidade que podem dar a ideia de que, quando estão definidas para o máximo de qualidade/mínimo de compressão (100, no caso do Paint.net) a compressão é inexistente. Isso não é verdade. As definições de qualidade máxima introduzem sempre algum tipo de compressão de imagem, mesmo que o resultado final não seja visível a olho nu. Aliás, no caso do Paint.net, nem é aconselhável usar a qualidade no nível 100: o nível 99 oferece basicamente o mesmo tipo de qualidade, mas com resultados observáveis na redução do tamanho do ficheiro.
Comprimir um JPEG.
Os ficheiros JPEG podem ser comprimidos por utilitários tipo ZIP. Mas, tal como os ficheiros MP3 e pela mesma razão, o resultado da compressão não é um ficheiro muito mais pequeno. Na maior parte dos casos ganham-se apenas meia dúzia de bytes. Isto acontece porque o algoritmo ZIP procura sequências de dados semelhantes nos ficheiros de forma a comprimi-los (substituindo sequências complexas por outras mais simples) e os algoritmos de compressão com perdas como o JPEG (e o MP3) reduzem essa redundância a níveis negligenciáveis. Resultado: podemos “zipar” JPEGs… mas não ganhamos nada com isso.