Como se não bastasse, à alguns meses a empresa Google disponibilizou o código fonte do projeto e/ou produto VP8 como parte do projeto WebM, cujo objetivo foi proporcionar um formato de vídeo realmente livre para a internet. Agora (dia 01/10/2010), com  objetivo de turbinar a internet como um todo, libera o código fonte de um novo formato de imagem. O WebP que gera arquivos até 40% menores que o tradicional padrão JPEG. Segundo engenheiros do Google, a mudança de padrão seria importante pois 65% dos arquivos da web são imagens e 90% desses arquivos são JPEG. Os 10% restantes se dividem entre PNG e GIF, mais usados para ilustrações.

“O WebP usa codificação preditiva para codificar uma imagem, a mesma metodologia usada pelo codec de vídeo VP8 para comprimir quadros em vídeos. A codificação preditiva usa os valores de blocos de pixels vizinhos para prever os valores em um bloco e depois codifica somente a diferença (residual) entre os valores de fato e a predição. Os residuais tipicamente contém diversos valores zero, que podem ser comprimidos muito mais efetivamente. Os residuais são depois transformados, quantizados e codificados de acordo com a entropia, como usualmente. O WebP também usa tamanhos de blocos variáveis. ” Notícias Linux

Assim como o JPEG, criado em 1992, o novo WebP diminui a qualidade da imagem para que ela fique menor, tentando que essa queda não seja perceptível pelo olho humano.

Veja abaixo a tabela comparativa…

JPEG WEBP
136780 bytes 122260 bytes (10.6%)
JPEG WEBP
46768 bytes 36154 bytes (22.69%)
JPEG WEBP
936605 bytes 581514 (37.91%)
JPEG WEBP
1867802 bytes 1234926 (31.74%)
JPEG WEBP
3587691 bytes 3115308 (13.17%)
JPEG WEBP
1175642 bytes 864134 bytes (26.50%)
JPEG WEBP
1093968 bytes 368168 (66.35%)

Claro que como openSUSE Member, ainda esta semana disponibilizarei os binários no repositorio openSUSE. Por enquanto deixo a receita de bolo de como instalar a partir do código fonte.

Primeiramente, efeute o download, descompacte, entre na pasta webp/leptonlib-1.066/src/ e execute o comando make.

$ wget http://webp.googlecode.com/files/webp-leptonica-0.0.1.tar.gz
$ tar -zxvf webp-leptonica-0.0.1.tar.gz
$ cd webp/leptonlib-1.066/src/
$ make

A seguir, entre na paste libwebp e efetue a compilação novamente com o comando make.

$ cd ../../libwebp
$ make
g++ -Werror -fPIC -c -I../leptonlib-1.066/src -o libwebp.o webpimg.c
g++ -Werror -fPIC -O2  -I../leptonlib-1.066/src  -c -o webpconv.o webpconv.c
g++ -Werror -fPIC -o webpconv webpconv.o ../leptonlib-1.066/lib/nodebug/liblept.a -ljpeg -lpng -lz -lm libwebp.o -lvpx -lpthread

Atenção: Vale a pena mencionar que o requsito para as compilação acima, é o SDK da libvpx ( http://www.webmproject.org/code/).

Para converter, basta utilizar o utilizario webpconv:

$ ./webpconv -quality 80 teste/*.jpg