La capacidad de resolución de imagen de los dispositivos de captura de fotografías actuales, como los teléfonos inteligentes y las cámaras digitales, aumenta día a día. El verdadero problema surge cuando tenemos que compartir estas imágenes, cargarlas en una instalación en la nube o incluso guardarlas en un dispositivo con almacenamiento restringido. Los diseñadores gráficos también tienen que lidiar con el mismo problema, pero están bien equipados con herramientas que pueden comprimir las imágenes para que puedan compartirse fácilmente con las partes interesadas.
Para Ubuntu, existen muchas utilidades gráficas que le permitirán optimizar y comprimir sus jpegs, pero aquí analizaremos una herramienta de línea de comandos llamada Jpegoptim. Esto es especialmente útil para los expertos en terminales a quienes les gusta realizar sus tareas utilizando los recursos mínimos del sistema. Jpegoptim puede ayudarlo a comprimir sus archivos jpegs, jpg y jfif con y sin pérdida de calidad, según lo que esté buscando.
En este artículo, describiremos cómo puede instalar la utilidad de línea de comandos Jpegoptim en Ubuntu. También explicaremos varias formas en las que puede usar esta aplicación para optimizar y comprimir sus archivos de imagen jpeg. El artículo también le permitirá escribir y ejecutar un script bash que automatizará el proceso de comprimir todos los archivos jpeg ubicados en un solo directorio.
Hemos ejecutado los comandos y procedimientos mencionados en este artículo en un sistema Ubuntu 18.04 LTS.
Instalación de Jpegoptim en Ubuntu
Jpegoptim está fácilmente disponible a través del repositorio oficial de Ubuntu y se puede instalar fácilmente a través de la línea de comandos con el comando apt-get.
Abra su aplicación Terminal ya sea a través de la búsqueda del iniciador de aplicaciones del sistema o mediante el atajo Ctrl+Alt+T.
El siguiente paso es actualizar el índice del repositorio de su sistema a través del siguiente comando:
$ sudo apt-get update
Esto le ayuda a instalar la última versión disponible de un software de Internet. Tenga en cuenta que solo un usuario autorizado puede agregar, eliminar y configurar software en Ubuntu.
Ahora está listo para instalar Image Jpegoptim; puede hacerlo ejecutando el siguiente comando como sudo:
$ sudo apt-get install jpegoptim
El sistema puede pedirle la contraseña de sudo y también proporcionarle una opción S/n para continuar con la instalación. Ingrese Y y luego presione enter; el software se instalará en su sistema. Sin embargo, el proceso puede llevar algún tiempo dependiendo de la velocidad de Internet.
Puede verificar el número de versión de la aplicación y también verificar que efectivamente esté instalada en su sistema, a través del siguiente comando:
$ jpegoptim --version
Uso de Jpegoptim para la compresión de imágenes
Exploremos ahora el poder de Jpegoptim a través de las siguientes formas en que puede usarlo:
Comprime sin pérdidas una sola imagen
Si desea comprimir una sola imagen sin querer comprometer la calidad, use el siguiente comando:
$ jpegoptim image_name.jpg
Ejemplo:
$ jpegoptim sample.jpg
Si desea que la imagen se comprima aún más, puede ejecutar el mismo comando nuevamente. Sin embargo, Jpegoptim comenzará a omitir la compresión si alcanza el límite en el que tiene una calidad de imagen sin pérdidas con la mayor compresión.
Así es como se vería la salida en tal situación:
Comprimir una imagen a otra carpeta
Si tiene miedo de perder su imagen original porque Jpegoptim la sobrescribirá, puede decirle a la herramienta que guarde la imagen comprimida en otra carpeta.
Primero, cree una carpeta donde desee guardar las imágenes comprimidas. Si desea que se guarden en una carpeta ya existente, no necesita crear una nueva. Luego puede usar la siguiente sintaxis de comando para realizar la compresión:
$ jpegoptim -d ./[carpeta de destino] -p [nombre_imagen].jpg
Por ejemplo:
$ jpegoptim -d ./compressed -p sample.jpg
El comando anterior comprimirá y guardará mi archivo sample.jpg en una carpeta ya existente llamada "comprimido".
Comprobar la compresión potencial
Si quieres ver, de antemano, cuánto es capaz de comprimir una imagen, puedes simular la compresión de imágenes a través de Jpegoptim. El siguiente comando en realidad no comprimirá la imagen, solo le dirá cuánto se comprimirá la imagen si alguna vez intenta comprimirla con Jpegoptim.
El siguiente ejemplo explicará mejor el proceso:
Tengo una imagen jpg llamada muestra.jpg. Imprimiré su tamaño primero a través del comando du de la siguiente manera:
$ du sample.jpg
Luego, usaré el indicador -n con el comando jpegoptim para conocer su posible compresión.
$ jpegoptim -n sample.jpg
Cuando volví a verificar su tamaño después de usar el comando jpegoptim como se indicó anteriormente, no vi ningún cambio en su tamaño. Esto garantiza que el comando jpeg con el indicador -n solo muestre el futuro porcentaje de compresión y el tamaño sin comprimir realmente la imagen.
Comprimir Imágenes “con” pérdida de calidad
A veces queremos comprimir nuestras imágenes sabiendo que el proceso no será sin pérdidas. Lo bueno es que con Jpegoptim puedes especificar con cuánta pérdida de calidad estás de acuerdo. Hay dos formas de comprimir tus imágenes con "pérdidas":
Así es como puede especificar el porcentaje de compresión:
$ jpegoptim -m[percentage_in_numbers] image.jpg
Esta fue mi imagen original:
Y así es como se ve con un factor de calidad del 10 por ciento:
o como un porcentaje (1% - 99%) del tamaño del archivo original.
Así es como puede especificar el tamaño en kbs para la imagen resultante:
$ jpegoptim --size=[size-in-kb] image_name.jpg
Archivos de imagen de optimización por lotes
Hay varias formas de usar Jpegoptim para comprimir varios archivos a la vez.
El primero es especificar todos los archivos que desea comprimir en un solo comando jpegoptim de la siguiente manera:
$ jpegoptim file1.jpeg file2.jpg file3.jpg
El comando sobrescribirá todos los archivos especificados y los recién comprimidos.
El segundo método es decirle a Jpegoptim que comprima todos los archivos de cierto tipo, por ejemplo, jpg, todos en la misma carpeta:
$ jpegoptim *.jpg
Para ver cómo funciona este comando, enumeré todos los archivos en mi carpeta Imágenes con el indicador -l. Este comando imprimiría el tamaño total de todas las imágenes que residen en la carpeta actual:
$ ls -l
Luego usé el mismo comando ls -l para ver cuánta diferencia ha hecho el comando Jpegoptim en el tamaño total de todos los archivos. Puede ver la notable diferencia en el total de bytes en el siguiente resultado:
Estos eran solo dos archivos; puedes ahorrar mucho espacio así. La belleza de todo el proceso es que no compromete la calidad de sus valiosas imágenes. Por supuesto, puede hacer lo mismo con otros formatos de archivo compatibles con Jpegoptim.
La tercera y muy útil opción es que incluso puede utilizar un script de shell para automatizar la compresión de todos los archivos de un solo tipo ubicados en el directorio actual. He aquí cómo hacerlo:
Bash Script para comprimir todos los archivos jpg en el directorio actual
Esta sección explicará cómo puede escribir un script de shell que comprimirá todos los archivos jpg ubicados en el directorio actual en una carpeta llamada "comprimido". El script no creará la carpeta; simplemente guardará la salida en una carpeta ya creada con este nombre.
Primero, vaya a la carpeta Documentos donde crearemos el script:
$ cd Documents
Nota:Puede guardar el script en cualquier lugar que desee. Es recomendable que crees todos los scripts en la misma carpeta para que no pierdas la pista de dónde los has guardado. Personalmente, prefiero guardar todos mis guiones en la carpeta Documentos.
Crear el guión
Abra un nuevo archivo de script en uno de sus editores de texto favoritos. Usaremos el editor nano para abrir un archivo de script vacío con el nombre de compressAll.sh
$ nano compressAll.sh
En ese archivo vacío, agregue el siguiente script.
#!/bin/sh # compress all *.jpg files in the current directory # and place them in ./compressed directory # with the same modification date as original files. for i in *.jpg; do jpegoptim -d ./compressed -p "$i"; done
Consejo: En lugar de escribir todo el script en su archivo bash, puede copiarlo desde aquí y pegarlo en la Terminal usando Ctrl+Shift+V, o usando la opción Pegar del menú contextual.
Así es como se vería su archivo:
Ahora, salga del archivo a través del atajo Ctrl+X. Luego se le pedirá que guarde el archivo en "¿Guardar búfer modificado?" oportuno. Escriba Y y luego presione Enter; su archivo de script ahora está guardado en la carpeta actual.
Para hacer que este archivo sea ejecutable por el usuario actual, ejecute el siguiente comando en su Terminal:
$ chmod +x compressAll.sh
Para ejecutar el script, cambie su directorio actual al que desea comprimir los jpg (en mi caso, el directorio Imágenes). Asegúrese de que el directorio contenga una carpeta llamada "comprimida". Si no está allí, cree uno antes de ejecutar el script.
Ejecutar la secuencia de comandos
Finalmente, ejecute el script de la siguiente manera:
$ /home/[username]/Documents/compressAll.sh
Este comando ejecutará el script bash desde la carpeta en la que lo creó. Esta es la razón por la que tuvo que especificar la ruta completa a ese archivo .sh.
Verá que todos los archivos comprimidos se escribirán en la carpeta "comprimido". Puede verificar esto a través del siguiente comando:
$ ls compressed
Se trataba de la optimización de imágenes a través de la utilidad Jpegoptim. Para más detalles, puede ver la página de manual a través del siguiente comando:
$ man jpegoptim
Ahora compartir sus imágenes a través de Internet y cargarlas en una ubicación restringida de almacenamiento y ancho de banda no debería ser un problema