Zopfli es una biblioteca de compresión de datos que realiza la codificación de datos Deflate , gzip y zlib . [2] Logra índices de compresión más altos que las implementaciones convencionales de Deflate y zlib, pero a costa de ser más lenta. [3] Google lanzó Zopfli por primera vez en febrero de 2013 bajo los términos de la Licencia Apache 2.0 . [4]
El nombre Zöpfli es el diminutivo suizo alemán de “ Zopf ”, un tipo de Hefezopf sin azúcar . [5]
Zopfli puede generar un flujo de datos Deflate sin procesar o encapsularlo en formatos gzip o zlib. Zopfli logra una mayor densidad de datos mediante técnicas de compresión más exhaustivas. El método se basa en la iteración de modelos de entropía y un algoritmo de búsqueda de ruta más corta para encontrar una ruta de bajo costo de bits a través del gráfico de todas las posibles representaciones Deflate de los datos sin comprimir. [6] De forma predeterminada, Zopfli realiza 15 iteraciones, pero se puede configurar para realizar más o menos. Con la configuración predeterminada, la salida de Zopfli suele ser entre un 3 y un 8 % más pequeña que la compresión máxima de zlib, pero tarda unas 80 veces más. [4] [3]
Debido a su velocidad de compresión significativamente más lenta, Zopfli no es adecuado para la compresión sobre la marcha. Por lo general, se utiliza para la compresión única de contenido estático. [7] [8] Esto suele ser cierto para el contenido web que se sirve con compresión HTTP basada en Deflate o el contenido web en un formato de archivo basado en Deflate, como los archivos de fuentes PNG o WOFF . [9] Otro caso de uso son las actualizaciones o descargas de software con archivos de paquetes de software que tienen un formato basado en zip , como los paquetes de aplicaciones de Android (APK) o los archivos Java (JAR), especialmente a través de conexiones móviles. [10]
Zopfli se basa en un algoritmo de Jyrki Alakuijala. [11] La primera implementación de referencia de Zopfli, de Jyrki Alakuijala y Lode Vandevenne, apareció en febrero de 2013. La versión 1.0.0 se lanzó el 25 de abril de 2013. [12] La implementación de referencia es una biblioteca de software bajo los términos de la Licencia Apache 2.0 , escrita en C. [2 ]
Desde entonces, la comunidad de código abierto ha intentado modificar Zopfli para optimizar los archivos Portable Network Graphics (PNG), ya que PNG utiliza una capa de compresión Deflate. El fruto de estas modificaciones fue ZopfliPNG, que fue admitido en el repositorio Zopfli de Google en mayo de 2013. [13] El algoritmo Zopfli también se ha integrado en otras herramientas de optimización de compresión PNG como advpng (de la suite de utilidades AdvanceCOMP) [14] y OxiPNG. [15]