Hace ya un buen tiempo en mi blog anterior había hecho algunos scripts para reducir de tamaño las imágenes que subía en Flickr o en ese blog.

Como ese blog pasó a la historia junto con los artículos que tenía, las dos entradas relacionadas con lo mismo desaparecieron. Hace como una semana me preguntaron el porqué no escribo tan seguido y comenté que principalmente porque a veces no encuentro sobre qué escribir.

Y de ahí surgió el comentario sobre este tema y le mencioné que ya había resuelto ese detalle, aunque ahora mismo ya no use dichos scripts.

Pues bien y después de rebuscar entre las cosas que tenía almacenadas por fin encontré no uno, sino varios scripts sobre el tema. Pondré los primeros que usaba y finalmente el que para mi gusto fue el que finalmente usé masivamente debido a que estaba más completo.

Primeros scripts

 

El primero le puse el nombre de “achicar” y es:

#!/bin/bash
#
# Pequeño script que cambia la resolución de la imagenes (con extension PNG) al 27% del tamaño original.
# Realizado por: Hbautista, hbautista@usoli.org

for file in $( ls *.JPG ); do
convert $file -resize 27% foto_$file
done
echo “Listo!

Como verán es simple y tiene la limitante que sólo funciona con fotos que tengan la extensión jpg en mayúsculas, debido a que cuando pasaba las fotos de mi cámara a la computadora las tenía así.

Las fotos resultantes quedaban en el mismo directorio al igual que las originales, quedando las “nuevas” con “foto_” al inicio del nombre de cada archivo.

En el caso de pantallazos y otros archivos o fotos que tenían la extensión .png lo modifiqué resultando el script llamado “reducir”:

#!/bin/bash
#
# Pequeño script que cambia la resolución de la imagenes (con extension PNG) al 50% del tamaño original.
# Realizado por: Hbautista, hbautista@usoli.org

for file in $( ls *.png ); do
convert $file -resize 50% foto_$file
done
echo “Listo!

Luego de eso y buscando un poco más usé durante un tiempo este otro que lo llamé “quitar-calidad”:

#/usr/bin
mkdir pt
for N in *; do
convert -compress jpeg -quality 44 -enhance -font Bookman-DemiItalic  -fill white -pointsize 14 -draw "text 680,500 'hbautista'" $N pt/$N; done
ls -l pt/

Aquí ya no importaba la extensión y a diferencia de los dos primeros, en este caso lo que hacía era reducir la calidad al 44% de la imagen original, crear un subdirectorio dentro del directorio en donde se ejecutase el script y añadir la marca de agua “hbautista.usoli.org” en las fotografías y poniendo las reducidas y con la marca de agua en el subdirectorio “pt”.

foto_coapilla

 

Script final

 

Luego hice una mezcla de los primeros scripts con el último para que reduciera el tamaño y además le pusiera la marca de agua, pero digamos que era desperdicio de código porque nada más junte los tres scripts. Finalmente éste fue el script final que a mi gusto estaba bastante funcional, le puse el nombre de “blogfoto”:

#!/bin/bash
# blogfoto
# Pequeño script que cambia la resolución de la imagenes del tamaño original a 800*600. Usa ImageMagick
# Además de reducir la calidad de la imagen resultante.
# Realizado por: Hbautista, hbautista@usoli.org
# http://blog.hbautista.com/linux/redimencionar-imagenes-con-imagemagick/

# Primero nos aseguramos que la extensión esté en minúsculas y creamos fotoblog
rename 's/.JPG/.jpg/' *.JPG
mkdir fotoblog

#Empezamos el ciclo con las fotos de extensión jpg para reducirlo a 800*600.
#Además de poner las fotos dentro de fotoblog

for file in $( ls *.jpg ); do
convert -size 2048x1536 $file -thumbnail 800x600 fotoblog/foto_$file
done
echo “Listo!

# Ahora procedemos a comprimir más las imágenes dentro de fotoblog
cd fotoblog
for N in *; do
convert -compress jpeg -quality 55 -enhance -font Bookman-DemiItalic  -fill white -pointsize 14 -draw "text 680,500 'hbautista'" $N $N;
done
echo "Hemos terminado!"

Ahora bien, primeramente usando el comando rename pasamos de mayúsculas a minúsculas las extensiones, si es que están así. Creamos el directorio “fotoblog” y hacemos que las fotos sean reducidas a un tamaño de 800×600 y queden con el nombre de foto_loquesea.jpg dentro de ese directorio.

foto_chiapatuit

Una vez que haya terminado ese proceso que depende de cuántas fotografías estén dentro del directorio lo que hace es que accede al directorio fotoblog y ahí procede a añadirle la marca de agua.

¿Cómo usar el script?

 

Copiar el contenido del script final (blogfoto) en tu editor de texto favorito y adecuarlo a tus necesidades, es decir cambiar el nombre del subdirectorio, el tipo de letra o cambiar el texto de la marca de agua y guardarlo con el nombre de “loquesea.sh” para este ejemplo lo dejaré con el nombre original blogfoto.sh y lo dejaré en el directorio raíz de mi /home para luego como root copiarlo a /usr/local/bin y darle los respectivos permisos de ejecución:

Pant_script_foto

root@luke:/home/hbautista# cp blogfoto.sh /usr/local/bin/
root@luke:/home/hbautista# chmod +x /usr/local/bin/blogfoto.sh
root@luke:/home/hbautista#

Luego con tu usuario normal ubicarte en el directorio que tiene las fotos y ejecutar el script:

Pant_scriptfoto2

hbautista@luke:~$ cd Imágenes/Taller_Foto/
hbautista@luke:~/Imágenes/Taller_Foto$ blogfoto.sh
Can't rename *.JPG *.jpg: No existe el fichero o el directorio
“Listo!
Hemos terminado!
hbautista@luke:~/Imágenes/Taller_Foto$

El resultado se ve como esto:

Luces

Espero que les sirva

Enlaces:

Jugando con Imagemagick

ImageMagick manipulando centenares de imágenes

Noticias relacionadas: