Tarea a realizar
La tarea a realizar en uno de los traslados de página web:
- Tengo una carpeta, y dentro muchas subcarpetas (un árbol de carpetas)
- Dentro de cada una de las carpetas tengo diferents imágenes de diferentes formatos (jpg, jpeg y png
- De forma sencilla convertir todas esas imágenes en formato webp y reducirlas en tamaño si superan 950px de ancho o 750px de alto.
Qué necesitamos
Necesitaremos un programita (o programazo según mi opinión) que trabaja con imágenes desde la terminal: imagemagick
Por otro lado, un mínim de conocimientos de saber utilizar el terminal.
Cómo lo hacemos
Fácil.
- Nos vamos a la carpeta raiz donde tengamos todas las subcarpetas a trabajar con el explorador de ficheros
- Pulsamos botón derecho y escogemos la opción de Abrir un terminal
- Se abrirá el terminal situándose ya en la carpeta que necesitamos
- Ejecutamos la siguiente orden:
find . -type f \( -iname "*.jpg" -o -iname "*.png" -o -iname "*.jpeg" \) -exec sh -c '
for img; do
magick "$img" -resize "900x750>" "${img%.*}.webp"
done
' sh {} +
Con esta orden recorrerá todas las subcarpetas, cogerá todas las imágenes que encuentre, las reducirás si es necesario y las grabará en format webp con el mismo nombre.
Eso es todo?
Pues no. Nos puede interesar eliminar las imágenes anteriores, por lo que ejecutaremos las siguiente orden:
find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) -delete
Versión mejorada
He creado una versión mejorada (elimina carácteres raros y le pone el nombre de la carpeta donde está el fichero) en el artículo: Convertir JPG a Web recursivamente (versión mejorada)
Espero que os sea de utilidad

No hay comentarios:
Publicar un comentario