Rotar una colección de imágenes
Actualizado. Gracias a CP por el apunte.
Resulta que, aunque mi cámara de fotos detecta la orientación respecto al suelo cuando tomas la foto (es decir, que si la haces en vertical la guarda como foto tomada en vertical), no siempre funciona correctamente, ya que necesita un tiempo para “darse cuenta” de que la cámara está en vertical, por lo que muchas fotos tomadas “al vuelo” salen tumbadas al verlas en el ordendor, lo cual resulta un poco molesto.
Para solucionar esto, nada mejor que un script
. Usando el espectantisloso convert, que forma parte del paquete de programas de línea de órdenes de ImageMagick (aquí los teneis todos
y el no menos estupendo jhead, ambos disponibles vía apt, yum, etc, he hecho dos pequeños scripts que permiten rotar todas las imágenes que le lleguen como parámetros, bien automáticamente modificando el EXIF (es decir, sin pérdida de caldiad) o bien en un determinado número de grados pedido con una bonita ventana de diálogo, siguiendo la dirección de las agujas del reloj (es decir, con posible pérdida de calidad debido a que es necesario recodificar la imagen). El segundo sirve para cuando falla el primero (a veces no detecta correctamente si la foto debe ser vertical o no), y los grados se piden con dicha ventana por unas sencilla razón: si colocamos ambos como scripts de Nautilus, el gestor de archivos de Gnome, podremos seleccionar el conjunto de imágenes a golpe de ratón, mucho menos horroroso que escribir los nombres de las fotos a mano en una terminal
.
El código de los scripts es el siguiente:
#!/bin/bash
# autorotate_image - Script that autorotates each image passed as parameter.
# needs - jhead
[[ -d rotated ]] || mkdir rotated
exit 0
while [ $# -gt 0 ]; do
cp $1 rotated/
jhead -autorot $1
shift
done
#!/bin/bash
# rotate_image - Script that rotates each image passed as parameter in
# a number of degrees (asked using a dialog). Intended to
# be used as a nautilus script
# needs - gdialog and ImageMagick
degrees=`gdialog --title "Rotate images" --inputbox "Degrees (clock direction)" 200 450 2>&1` |
|
exit
[[ -d rotated ]] || mkdir rotated
while [ $# -gt 0 ]; do
cp $1 rotated/
convert -rotate $degrees $1 $1
shift
done
Para invocarlo desde la terminal basta con hacer:
$ rotate_image foto1.jpg ... fotoN.png
$ autorotate_image foto1.jpg ... fotoN.png
Pero lo realmente interesante es copiarlos al directorio de scripts de Nautilus, como ya he comentado antes:
$ cp rotate_image autorotate_image ~/.gnome2/nautilus-scripts/
A partir de ese momento, podremos seleccionar tantas imágenes como queramos y pinchar con el botón secundario del ratón para poder aplicar el script.
Descargar el script rotate_images
Descargar el script autorotate_images
Parecidos razonables
-
Un truco para gnome (random splash screen)
octubre 9, 2005
0 -
Mis scripts
octubre 27, 2005
0 -
Any to mp3
septiembre 6, 2005
1 -
Cambiando la batería al iPod 3G
enero 25, 2007
4 -
Programmed shutdown: pequeño script para apagar la máquina
abril 17, 2009
11

Vaya movie tocha. No sé si con este programa se hace lo mismo o la imagen pierde calidad al rotarla.
Seguramente no pierda calidad si símplemente la rotas. En ese programa, por lo que he leido, se puede hacer esto y muchas más cosas, pero es para Windows y no es libre ;-) (y su código de programación seguramente ocupe más de 10 líneas
Por lo que lei en la pagina del image magik ese, lo que haces con el script no es rotar la imagen tal cual, sino definir el parametro de giro, o al menos es lo que he entendido yo.
A ver si me explico, como decias, al hacer una foto vertical la camara detecta que es vertical, esa informacion debe quedar reflejada en algun parametro de la imagen para que tu, al verla en el ordenador, te aparezca en su posicion adecuada. Entonces con el programa del image magik y tu script lo que haceis es modificar precisamente eso, que no sé si es el EXIF ese.
Lo que hace el programa que señalé yo (no sera libre pero es gratis) y el visor de imagenes de windows es lo que puedes hacer con el photshop, que es rotar la imagen, pero necesariamente pierde calidad (al menos con el explorador), porque lo que modificas no es el cómo se va a mostrar la imagen, sino la imagen en sí misma.
Al menos es lo que saqué en claro al leer esto:
Porque, por lo visto, con el programa ese del image magik tambien pierde calidad.
Buen apunte. No había pensado que al estar comprimidas las fotos el rotar la matriz de píxeles no era posible directamente, siendo necesario descomprimir y comprimir, lo cual conlleva pérdida de calidad. Ya lo he actualizado, gracias por hacérmelo notar
.
Ya he visto que el programa ese es gratis, pero no lo voy a usar, primero porque es para Windows y segundo porque tengo alternativas libres igual de potentes. Ya sé que dichas alternativas son más engorrosas de usar en algunos casos, pero gracias a estos pequeños scripts la cosa se va igualando. En cualquier caso seguramente existan programas con interfaz gráfico para hacer este tipo de cosas en Linux, pero, ¡yo sólo quiero rotar las fotos! Con esto voy que chuto
.
Nada, para eso estamos
Yo creo que el mejor sistema y con menor pérdida de calidad es ladear la cabeza… Rápido, sencillo, multiplataforma…. ¿Qué mas puedes pedir?
Hay una versión mas cara que es hacerte con un soporte de esos que giran para el monitor..
El problema de tu solución es que estás valorando exclusivamente la calidad de la foto pero… ¿y la calidad de tus cervicales? Además esas son caras de reparar
Dimelo a mi que cervicales no, pero de lumbares ya me falta un cacho.
En el hospital se quedaron con ese trozo y con parte de un riñon de paso, en quitar cosas son unicos oye. Vete tu detras de ellos a explicarles el chiste de los informaticos.