Llevo algunos meses sin desarrollar ninguna aplicación para Android. Por esta razón, últimamente no suelo utilizar el complemento nautilus-iconify que permite crear iconos para Android de diferentes tamaños según pantallas. En este complemento, ya incluí la opción para comprimir las imágenes PNG, puesto que considero importante que el tamaño de las aplicaciones sea lo mas reducida posible. Aún así, en todos los artículos que publico incluyo varias imágenes. Y también para las aplicaciones y complementos que desarrollo para Ubuntu. Y es sobre todo en el caso de este sitio donde mas me preocupa el peso de las imágenes, y por esta razón, me he decidido a crear un nuevo complemento para reducir el peso de las imágenes PNG en principio.
Pero, ¿porqué las que tienen formato PNG? Bueno, para mi reducir el peso de las imágenes PNG es importante porque básicamente son las que utilizo tanto en aplicaciones Android para Ubuntu, y sobre todo para este sitio. El hecho de que sean PNG es por la transparencia. Soy consciente de que con JPG se pueden conseguir imágenes de menor peso para las mismas dimensiones y características…, pero que pasa cuando necesitamos transparencia. Otra opción sería recurrir a Webp, pero el problema es que actualmente no está soportado por todos los navegadores.
Como sabes, cada vez se visitan más páginas desde el móvil, y por esta razón el peso de la página es importante, por dos razones, por un lado por cuestión de velocidad. Cuanto mas pesa la página mas tarda en cargarse. Por otro lado, por tu tarifa de datos cuanto mas pesa una página, mas pagas por su descarga. Y si no pagas, porque tienes una tarifa de X Gb, al fin y al cabo estoy gastando esos GB, y al final o bien, pagarás o bien, la conexión será mas lenta.
Por estas razones, básicamente por ti, para que tu experiencia al ver esta página sea satisfactoria, es importante reducir el tamaño de la página y por ende de las imágenes que en ella aparecen.
Y, ¿por que un complemento para Nautilus? La razón es sencilla, por comodidad, solo tienes que seleccionar las imágenes y reducir el tamaño.
¿Que proceso utiliza para reducir el peso de las imágenes?¿Porque has elegido este sistema?….
Herramientas para reducir el peso de las imágenes PNG
Existen diferentes herramientas disponibles para reducir el peso de las imágenes PNG tanto online (cosa que ya deseché hace tiempo), como en las propias distribuciones Linux, para utilizar desde el terminal.
Algunas de las que he probado son:
- optipng. Reduce el tamaño re-comprimiendo la información y sin pérdida. La ventaja de esta herramienta es que lo hace sin pérdida de datos. La calidad de la imagen es la misma que la original. El problema es que es muy lenta.
- pngcrush. Esta herramienta al igual que la anterior optimiza la imagen sin pérdida, pero al igual que sucede con la anterior, es muy lenta.
- pngquant. Al contrario que las dos anteriores, esta herramienta si que modifica la imagen. Sin embargo tiene dos ventajas, por un lado es mucho más rápida y por otro reduce el peso de la imagen significativamente. Lo que hace realmente es reducir una imagen PNG de 24-bit a 8-bit.
- pngnq. Esta herramienta también reduce el peso de las imágenes pasando de 24-bit a 8-bit, pero utilizando una técnica diferente para la cuantización de la imágenes.
Aunque yo he realizado varias pruebas sobre todo en lo referente al tiempo, he leído un interesante artículo en Pointless Rambling en el que hacen una comparativa de las cuatro herramientas. De este se desprende las siguientes gráficas. La primera para la reducción del peso de la imagen:
La siguiente gráfica muestra una comparativa referida a la calidad de la imagen resultante tras la reducción del peso de la misma por cada una de las herramientas.
De la primera gráfica se desprende que para conseguir grandes reducciones en el peso de las imágenes, lo mejor son herramientas como pngnq ó pngquant.
Y de la segunda de las gráficas, se puede observar que la pérdida de calidad es menor con pngquant en la mayor parte de los casos. De cualquier forma, tal y como indican en Make: en español, lo mejor sería realizar la cuantización con ambas herramientas y elegir la imagen resultante que mejor quede.
Respecto a los tiempos, tengo que decir, que la mas rápida es pngnq, consiguiendo ahorros superiores al 100% respecto a pngquant, mientras que para el caso de optipng el ahorro es superior a 3800%.
Por ponerte un ejemplo, una imagen de 28 MB, con optipng tarda casi 6 minutos, con pngquant tarda 18 segundos mientras con pngnq no llega a 9 segundos.
Reducir el peso de las imágenes PNG con nautilus-pngcompress
Pero ¿porque utilizar nautilus-pngcompress para reducir el peso de las imágenes PNG?¿Sinceramente? Por comodidad.
No cabe duda, que para realizar operaciones masivas de conversión, reducción, etc, lo más rápido es el uso del terminal. Sin embargo, no es lo más práctico a la hora de elegir unas pocas imágenes a convertir.
Otra razón para decantarse por nautilus-pngcompress, es la destreza que tengas con la terminal. En mi caso, el problema que suelo tener es que de una vez a otra no recuerdo la herramienta que utilicé en el terminal, y pierdo mucho tiempo buscando la herramienta óptima.
Con nautilus-pngcompress, tienes la ventaja de que ves el progreso de la compresión de forma gráfica, lo puedes detener cuando lo consideres y lo tienes a mano para seleccionar reducir las imágenes que necesites.
El motor de reducción
De todas las herramientas disponibles para reducir el peso de las imágenes PNG, finalmente me he decantado por utilizar pngnq, por la rapidez y por que durante todas las pruebas que he realizado, los resultados obtenidos has sido mas que satisfactorios.
Lo cierto es que no he apreciado diferencia entre las diferentes imágenes que he convertido, en lo que se refiere a calidad, pero sin embargo, respecto al tiempo, el ahorro es muy significativo.
Uso y funcionamiento
Para reducir el peso de las imágenes PNG, ya sea una o varias, desde el explorador de archivos Nautilus, tan solo tenemos que seleccionar las que consideremos. Pulsamos el botón derecho del ratón para que aparezca el menú contextual. Y seleccionamos la opción Compress PNG Files,
Una vez seleccionada la opción indicada, aparecerá un cuadro de diálogo, donde nos informará de la progresión en la reducción del peso de las imágenes que hemos elegido.
Una vez reducido el peso de las imágenes, veremos en la ventana del explorador de archivos las nuevas imágenes creadas donde se ha añadido -reduced al final del archivo.
Instalación
Este complemento para reducir el peso de las imágenes PNG, no está en los repositorios oficiales de Ubuntu, pero lo puedes instalar fácilmente utilizando ppaurl para lo que solo tienes que hacer clic en nautilus-pngcompress
Tambień puedes recurrir a la terminal, y ejecutar las siguientes órdenes,
sudo add-apt-repository ppa:atareao/nautilus-extensions sudo apt update sudo apt install nautilus-pngcompress
Más información,
Otra opción es con Gimp, una vez tenemos nuestro .png lo abrimos con el programa, nos vamos al menú Imagen->modo->indexado luego generar paleta optima y convertir, ahora solo debemos exportar la imagen y obtendrá el nuevo tamaño con excelente resultado, me paso una imagen de 15kB a 5kB y otra de 207kB a 53kB.