Anteriormente compartí un artículo dedicado a optipng y jpegoptim, dos herramientas para optimizar sin pérdida (reducir el tamaño en disco) imágenes PNG y JPEG, respectivamente. Esta vez descubrí AdvanceCOMP, un compresor de imágenes PNG que soporta el algoritmo de compresión libre Zopfli, desarrollado por Google, y decidí probarlo.

AdvanceCOMP es una colección de utilidades de reconversión de archivos .ZIP, .PNG, .MNG y .GZ, diseñada originalmente para recomprimir ROMs, snapshots y videos de juegos emulados.

Además de recomprimir estos formatos utilizando el algoritmo DEFLATE de 7-Zip, permite utilizar el algoritmo Zopfli, tal como mencionaba al comienzo de este artículo.

Para instalar AdvanceCOMP, es necesario compilarlo desde sus fuentes. En este caso utilizo un sistema *BSD, pero el procedimiento es idéntico en sistemas GNU/Linux.

Descargar y extraer el paquete tar.gz:

$ fetch https://github.com/amadvance/advancecomp/releases/download/v1.20/advancecomp-1.20.tar.gz
$ tar xzvf advancecomp-1.20.tar.gz

Luego configurar, compilar e instalar e paquete:

$ cd advancecomp-1.20
$ ./configure --prefix=/usr/local
$ make
# make install

Para recomprimir imágenes PNG con el algortimo Zopfli, se debe utilizar la herramienta advpng e indicar las opciones -z -4. El nivel de compresión es ajustable:

emi@hal9000:~/advancecomp-1.20 % advpng --help
advancecomp v1.20 by Andrea Mazzoleni, http://www.advancemame.it
Usage: advpng [options] [FILES...]

Modes:
  -l, --list            List the content of the files
  -z, --recompress      Recompress the specified files
Options:
  -0, --shrink-store    Don't compress
  -1, --shrink-fast     Compress fast (zlib)
  -2, --shrink-normal   Compress normal (7z)
  -3, --shrink-extra    Compress extra (7z)
  -4, --shrink-insane   Compress extreme (zopfli)
  -i N, --iter=N        Compress iterations
  -f, --force           Force the new file also if it's bigger
  -q, --quiet           Don't print on the console
  -h, --help            Help of the program
  -V, --version         Version of the program

Con -4 se selecciona el nivel de compresión "insano" que es justamente utilizando el algoritmo Zopfli.

Como advpng no tiene un modo recursivo, es necesario utilizar find para buscar todos los archivos PNG dentro de un directorio:

$ cd ~/images
$ time find . -type f -iname "*.png" -exec advpng -z -4 {} \;

Tener en cuenta que Zopfli es altamente intensivo en cuanto a consumo de CPU, por lo que se debe evitar su uso desde un VPS.

A mi estación de trabajo con un procesador Intel Core i3 le llevó casi 3 horas recomprimir 1116 imágenes PNG:

        6816        6359  93% ./2015/1/2014-social.png
        6816        6359  93%
        5841        5326  91% ./2015/1/2014-browser.png
        5841        5326  91%
       48490       44491  91% ./2015/1/referals.png
       48490       44491  91%
       11283       10544  93% ./2015/1/2014-country.png
       11283       10544  93%
        8329        7607  91% ./2015/1/2014-gender.png
        8329        7607  91%
       89521       83972  93% ./2015/4/wp_ss_20150421_0005.png
       89521       83972  93%
       88894       83418  93% ./2015/4/wp_ss_20150421_0006.png
       88894       83418  93%
       69064       61099  88% ./2015/4/insultos-sudo.png
       69064       61099  88%
       16745       14669  87% ./2015/4/wp_ss_20150421_0002.png
       16745       14669  87%
       10252        8860  86% ./2015/4/wp_ss_20150421_0003.png
       10252        8860  86%
        4779        4192  87% ./2015/4/vmware-tools02.png
        4779        4192  87%
        4430        3893  87% ./2015/4/vmware-tools01.png
        4430        3893  87%
       53278       49096  92% ./2015/4/wp_ss_20150421_0001.png
       53278       49096  92%
10306.358u 31.204s 2:52:31.58 99.8%     218+187k 751+544io 13pf+0w

La tercer columna muestra el porcentaje de tamaño luego de recomprimir. Por ejemplo 92% indica que se logró reducir un 8% el tamaño de la imagen. Tener en cuenta que estas imágenes habían sido previamente recomprimidas utilizando optipng, lo cual significa que AdvanceCOMP logró reducir aún más, mejorando el rendimiento de optipng.

Referencias

AdvanceCOMP - Wikipedia

Zopfli - Wikipedia


Tal vez pueda interesarte


Compartí este artículo