Modificar una gran cantidad de imágenes a la vez…
Qué título más malo, pero tras cambiarlo cinco veces no se me ocurre otro mejor, así que éste se ha quedado. Como siempre hago, cada vez que tengo algún problema y encuentro la solución, lo publico a modo de tutorial para todos aquellos que seguro que alguna vez lo necesitarn (Mentira!!! La verdad es que mi memoria es tan mala que me ahorro tener que buscarlo otra vez cuando lo necesite :P)
Así que esta vez ha sido con las imágenes, tras el viaje a Burdeos tengo una gran colección de fotografías que quería subir y colgarlas en Internet para que la gente las pueda ver. El problema es que están hechas con una resolución elevada lo que da lugar a unas imágenes un poco “grandes” y “pesadas” para ponerlas en una galería. Tras buscar un poco por Google (Qué grandioso que es…), he encontrado la solución:
Existe un programa llamado ImageMagick con el que podemos editar nuestras imágenes desde la consola de Linux de una forma sencilla y rápida, en primer lugar será necesario descargarlo :
onir@neo:~$ sudo aptitude search imagemagick
Password:
i imagemagick - Image manipulation programs
v imagemagick-dev -
v imagemagick-doc -
onir@neo:~$ sudo aptitude install imagemagick
De esta manera se instalará este paquete de varias aplicaciones que nos permitirá convertir, editar, crear o escribir nuestras imágenes entre otras muchas más posibilidades. Ahora mismo en particular sólo me interesará reducirlas un poco para lo que utilizaremos la herramienta convert. Esta utilidad tiene una amplísima lista de opciones disponibles para su uso, sólo hace falta comprobar la salida del comando convert -help, pero la que nos interesa es -sample que nos permite escalar una imagen; se utiliza de la siguiente forma:
# convert -sample 100×100 entrada.jpg salida.jpg
# convert -sample 50%x50% entrada.jpg salida.jpg
La primera de ellas escalará la imagen entrada.jpg a una tamaño de cien píxeles de ancho y alto, mientras que la segunda la escalará a la mitad dando lugar a una imagen llamada salida.jpg; pero claro…¿Hay que hacer esto con cada una de las imágenes? Nooo, es lo que más me gusta de linux, impossible is nothing.
Gracias a la consola podemos crear un pequeño script que coja cada una de las imágenes que encuentre en el directorio y les cambie el tamaño. Para ello simplemente debemos abrir cualquier editor de texto y escribir lo siguiente:
#!/sbin/bash
for img in `ls *.jpg`
do
convert -sample 50%x50% $img thumb-$img
done
Guardalo con la extensión .sh y dale permisos de ejecucción.El script buscará todos los ficheros que acaben en .jpg y les reducirá el tamaño a la mitad poniendo como nombre de la imagen resultante el que tenía con el prefijo thumb-. Si en vez de .jpg tienes otro formato simplemente lo deberás cambiar por su extensión.
Para ejecutarlo simplemente tendrás que copiar el archivo en el directorio donde tengas las imágenes y ejecutar el script escribiendo ./resize en la consola.
Espero que os haya sido útil, a mí sí :p
p.D : A ver si pongo las imágenes…
Hay 9 comentarios
Deja una respuesta
¿Y al final donde están las fotos? jeje. Bueno, lo que te iba a decir. Yo instalé ubuntu, luego suse y en medio creo que otro y al final he desistido. Linux debería ser para todos los mortales y no andar con consolas, comandos y todo el rollo ese, que no dudo que una vez que te hayas aprendido todo sea fácil pero seamos sinceros, la mayoría de la población quiere cosas fáciles, doble click y punto y mientras linux (ya cada vez más) no sea capaz de evitar tener que usar la consola cada 2 por 3 no conseguirá llegar a una gran masa de población.
Una cosa que aprenderás en Teleko es a usar Matlab. Es un programa de tratamiento digital de la señal. Y con él se puede hacer este “resampleado” con la funcion imresize del image toolbox. No es una solución para todo el mundo, está claro, Matlab no es software libre, es complicado de usar, pesado y caro, pero aún así se podría hacer un script que aparte de redimensionar las imágenes les haga un ecualizado adaptativo ( y alguna que otra cosa todo automáticamente.
Pero qué friki eres. Eres friki, friki de verdad
Yo alguna vez he pensado hacer scripts en php para que las imágenes del blog se procesen (tintarlas del color del blog, por ejemplo) cada vez que alguien las solicite… pero eso es mucha caña!
#Hámster
Las fotos ya están en proceso de subirlos, las he dejado ahora copiando. No están en perfectas condiciones pero se pueden ver
La consola de Linux la puedes usar o no, la mayoría lo puedes hacer con clicks de ratón; sin embargo es mucho más rápido escribir cuatro palabras directamente en el terminal y que se haga lo mismo. El problema de Linux es que la gente no quiere aprender cómo manejar un ordenador y no que el SO lo “maneje a él”, es más cómodo hacer doble click y listo pero por lo menos a mí me gusta más el trastear.
Soy trasto por naturaleza
#Alex
Ya he oído hablar sobre él pero no tenía ni idea de que también funcionara con imágenes, yo que creía que era simplemente para operaciones matemáticas y su representación graica…
Joer, cómo me gustaría decir “es un programa de tratamiento digital de la señal [...] se puede hacer el resampleado con la funcion imresize del image toolbox ” y saber en realidad qué es lo que estoy contando
#Holbeist
No es ser friqui… tenía un problema y le he buscado la solución
No te preocupes, cuando termines la carrera (o más bien en cuarto) sabrás manejar el matlab y lo que es una función y un toolbox, aunque no te explicarán como tratar las imágenes a no ser que hagas la especialidad, pero ya podrás aprender cosas por ti mismo.
Gracias, solo conocia un metodo para hacer esto de las imagenes en photoshop. Y lo acabo de hacer en un santiamen en Ubuntu/gnulinux.
De nada!!! Es mucho más cómodo el comando que abrir el Photoshop y editarlo…
Hola,
gracias por el minitutorial, me ha sido muy útil. Ya estaba calentándome la cabeza con el script-fu, pero tu solución es más sencilla y elegante.
salud.
Esta entrada es algo antigua, pero he tenido que recurrir a ella para redimensionar unas fotos, así que gracias por ello
Además creo que es la entrada por la que empecé a leer tu blog…
Bueno, este comentario no es para dorar la píldora, sólo para hacer una valiosa aportación
Existe un frontend para imagemagick!! Es genial, te permite redimensionar fotos seleccionando varias y haciendo click con el botón derecho, así como crear un gif con las fotos, hacer un vídeo, renombrarlas masivamente… es para konqueror, eso sí (las ventajas de kde frente a gnome me darían para hablar mucho tiempo
). El paquete en debian/ubuntu es konq-kim.
Hale, espero que fuera interesante.