Script para optimizar imágenes en lote

23 de febrero de 2021

Requisitos

  • Bash
  • ImageMagick

Descargo de responsabilidad

Este script está desarrollado según unas necesidades personales particulares.

Si decides usarlo, será bajo tu propio riesgo. No me hago responsable de ninguna pérdida o deterioro de datos derivado del uso del script.

En caso de que decidas usarlo, realiza siempre una copia de seguridad de las imágenes antes de procesarlas con el script.

#!/bin/bash # Se ejecuta en el directorio actual # Reduce a 1920 la dimensión mayor de la imagen # Respeta la relación de aspecto set -euxo pipefail function convertirjpeg () { if [ ! -d jpegAlternatives ]; then mkdir jpegAlternatives fi # Convierte png a jpeg en la carpeta alternativa. convert $1 jpegAlternatives/$(identify -format "%t" $1).jpeg } # Comprueba instalación de ImageMagick which magick > /dev/null 2>&1 if [ $? -ne 0 ]; then echo It requires ImageMagick package installed. exit 1 fi # Comprueba el número de argumentos if [[ $# > 2 ]]; then echo Demasiados argumentos exit 2 fi case $# in 1) directory=$1 max_dimension=1920 ;; 2) directory=$1 max_dimension=$2 ;; *) directory=pwd max_dimension=1920 ;; esac cd $directory # Crea un directorio para las imágenes optimizadas if [ ! -d "optimizedImages" ]; then mkdir optimizedImages fi for i in $(ls); do mime1=$(mimetype $i | awk '{print $2}' | awk -F"/" '{print $1}') mime2=$(mimetype $i | awk -F"/" '{print $2}') if [ "$mime1" == "image" ]; then w=$(identify -format "%w" $i); h=$(identify -format "%h" $i); if [ "$w" -gt "$max_dimension" ] || [ "$h" -gt "$max_dimension" ]; then convert $i -resize ${max_dimension}x${max_dimension} $i fi case "$mime2" in "png") t=$(file $i | awk '{print $9}') if [ "$t" == "RGB," ]; then echo $? # No tiene transparencia convertirjpeg $i fi optipng -nc -nb -o7 -full -out optimizedImages/$i $i ;; "jpeg") jpegoptim --max=80 --all-progressive --strip-all --strip-exif --preserve --totals --dest=optimizedImages $i ;; esac fi done
Lenguaje del código: Bash (bash)

https://github.com/casoblus/bash_scripts/tree/master/optimizeImages

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.