¿Cómo giro muchas fotos digitales 180 grados en una sola operación?

20

Tengo varios miles de imágenes tomadas con una GoPro que están al revés.

Estoy buscando una manera, una aplicación realmente, que pueda voltearlos a todos, 180 grados, en una sola operación.

He examinado todas las opciones en el propio software de GoPro, pero no encuentro esto solo para imágenes fijas. Puedes rotar mientras haces un video, pero quiero mantener las imágenes individuales.

Estoy en Windows

Johns-305
fuente
jpegtran es el camino a seguir. puede rotar y / o voltear archivos JPEG sin pérdidas, y es fácil de llamar desde un script porque es una aplicación CLI.
Sarge Borsch

Respuestas:

31

Recomendaría cualquiera de las aplicaciones de esta lista en JPEGclub.org , que desarrolla y mantiene software para Independent JPEG Group. Tienen un código gratuito llamado jpegtranque puede hacer algunas transformaciones básicas (como la rotación) sin volver a codificar la imagen.

Girar las imágenes de la manera "ingenua" (renderizar en un mapa de bits, reorientar el mapa de bits y volver a guardar) puede dar lugar a un aumento de los artefactos JPEG , y a archivos más grandes con datos menos útiles.

La lista anterior contiene software que se sabe que lo hace "de la manera correcta". Otro software también puede (quizás usando una base de código diferente), pero ImageMagick no es uno de ellos, desafortunadamente. Pero, a partir de agosto de 2016, hay 87 opciones diferentes para muchas plataformas informáticas diferentes, incluido Windows.


Nota de los comentarios: el OP usó este ciclo basado en esta respuesta:

FOR %f IN (.\Src\*.*) DO jpegtran.exe -rotate 180 %f .\Rotated\%~nxf

con buenos resultados

mattdm
fuente
1
Tenga en cuenta que la rotación sin pérdidas funciona solo si cada dimensión de cada imagen es un múltiplo de 16 píxeles - 8 si no se utiliza el submuestreo de croma. De lo contrario, se perderán los píxeles en exceso o la imagen se rellenará con un borde. ¡Por ejemplo, 1080 no es múltiplo de 16!
Gnubie
2
Secundo la recomendación de jpegtran; Aún mejor, si le importa mantener la coherencia de la miniatura y la Orientationetiqueta del EXIF , puede considerar exiftrancuál está inexplicablemente ausente de la lista JPEGclub, pero no tiene pérdidas. Mi comando (en Linux) para esto sería exiftran -i -1 *.jpgo find . -name '*.jpg' -print0 | xjobs -0 -l 10 exiftran -i -1; esto tendrá que adaptarse para el shell de Windows.
Toby Speight
@Toby Buena adición. Muchos (¿la mayoría?) De los programas enumerados también preservarán y actualizarán los metadatos, por lo que recomiendo uno de ellos en lugar de hacerlo jpegtrandirectamente.
mattdm
¡Gracias! Usé jpegtran en Windows. La rotación 180 es exactamente lo que necesitaba. Puse el comando por lotes exacto en la pregunta para futuras referencias.
Johns-305
@ Johns-305 Me alegra haber podido ayudar. En la edición de la pregunta, vea meta.photo.stackexchange.com/questions/1601/…
mattdm
9

Puede usar ImageMagick con la rotateopción :

convert image.jpg -rotate 180 result.jpg

Debería poder aplicar este comando a varios archivos, dependiendo de su entorno.

nulo
fuente
10
Sin embargo, tenga en cuenta que esto volverá a codificar el JPEG, perdiendo calidad.
mattdm
8

En Windows puede hacerlo sin ningún software adicional en DOS operaciones. Seleccione los archivos que desea rotar en el Explorador de archivos, haga clic derecho y haga "rotar a la derecha" (o izquierda) dos veces. Se hará sin pérdidas si la imagen lo permite (por ejemplo, las dimensiones no son "divertidas").

Agent_L
fuente
¿Qué son las dimensiones "divertidas"? ¿Por qué las dimensiones de una foto evitarían la rotación sin pérdidas?
scottbb
2
Después de leer ¿Las rotaciones de "Windows Photo Viewer" son sin pérdida? , Entiendo ahora. Ambas dimensiones deben ser un múltiplo de 8 para poder rotar sin pérdidas.
scottbb
1
Esta es la mejor respuesta. Me uní al sitio solo para votar esto.
fi12
5

Puede usar xnview en Windows, que tiene algunos procesamientos de modo por lotes y también, para una simple rotación de imágenes, tiene la opción de rotar imágenes en función de los datos exif.

Seleccione todas las imágenes (¡incluso las orientadas correctamente! Sabrá que ya están bien orientadas), "gire en función de exif" y lo hará (sin recalcular el jpg, sin pérdida de calidad).

Como dicen en http://newsgroup.xnview.com/viewtopic.php?t=1420 :

Para hacer esto, seleccione todas sus imágenes y seleccione "Herramientas> Transformaciones sin pérdida de JPG" (o la lista desplegable del símbolo 'Transformaciones sin pérdida de JPG' en la barra de herramientas). En el cuadro de diálogo, marque el botón con "EXIF" y luego presione "Ir". XnView rotará permanentemente las imágenes según el indicador de orientación EXIF.

Y para la próxima vez, si tiene un gopro lo suficientemente reciente, también puede verificar su función: https://gopro.com/support/articles/what-is-auto-image-rotation

Olivier Dulac
fuente
¿GoPro guarda realmente los datos de orientación EXIF ​​correctos? El Hero4 / Session tiene un sensor de orientación, pero no creo que ninguno de los modelos más antiguos lo tenga.
vclaw
4

Suponiendo que sus fotos estén en formato JPEG, soy bastante parcial con JPEGCrops , una herramienta simple y gratuita para el procesamiento por lotes sin pérdida de imágenes.

Puede recortar a relaciones de aspecto específicas y / o rotar.

ths
fuente
4

¿Puedo sugerir el modo por lotes de Irfanview, que solo se ejecuta en Windows? Irfanview también es bueno para ediciones simples, pero no es GIMP.

Una vez instalado, seleccione "Archivo | Conversión por lotes / Cambiar nombre". A partir de ahí, se vuelve un poco complicado, debe seleccionar todos los archivos, debe especificar una carpeta de destino y hacer clic en el botón Avanzado para ver las opciones avanzadas. Puede rotar +/- 90 °, pero para hacer 180 ° necesitará elegir una rotación fina en el extremo derecho e ingresar 180 °. Tenga en cuenta que también puede cambiar su tamaño, cambiar la calidad JPEG y cambiarles el nombre.

También puede hacerlo bastante rápido si permanece en la GUI y usa el teclado. Abra cualquier archivo en la carpeta de imágenes. Presione 'R' dos veces para rotar dos veces. Luego presione Ctrl-S para guardar. Aparecerán dos ventanas, una de diálogo de archivo típico y otra para compresión JPEG (si el formato predeterminado de GoPro es JPEG). Me aseguraría de que el Factor de calidad sea al menos del 90%. Luego guarde el archivo; debe poder presionar la tecla Tab o Alt-S para guardar. Es posible que aparezca un cuadro de diálogo de tipo "¿Está seguro?" (Podría desactivarlo). Luego, simplemente presione la barra espaciadora para avanzar al siguiente archivo en la carpeta. Si tiene más de 50 archivos, el lote podría ser más rápido. Diez archivos, acabo de hacer lo anterior.

Lo clave para Irfanview es que es como Blender, no le pregunta si desea Guardar si modifica una imagen.

CohetePlumas
fuente
3
Eso hará una rotación con pérdida, ya que gira, luego vuelve a guardar el JPEG, por lo que está perdiendo calidad. En IrfanView, es mejor usar la función "Rotación JPEG sin pérdida" (Shift + J). Tenga en cuenta que puede usar la vista en miniatura para seleccionar todas sus imágenes, luego rotarlas todas a la vez.
vclaw
1
@RocketFeathers: Irfanview es la herramienta más fácil con la que hacer esto sin pérdidas en un entorno Windows. Pero como dice vclaw, es mucho mejor usar la "rotación sin pérdida JPEG" para hacerlo. Edite su respuesta para reflejar eso y la votaré.
Michael C
"no le pregunta si desea Guardar si modifica una imagen". - Esto se puede cambiar en Opciones> Propiedades / Configuración ...> Solicitar guardar cambios al salir del programa.
MrWhite
3

FSViewer es un programa útil que puede hacer eso.

Abra la carpeta donde están las imágenes, seleccione todo lo que desea rotar, presione F4 y vaya a la pestaña 'Conversión por lotes' en la ventana que se abre. Haga clic en 'Opciones avanzadas' en la parte inferior derecha, vaya a la pestaña 'Rotar'. Marque 'Voltear / Rotar', luego 'Rotar', luego seleccione '180' a continuación y presione OK. Establezca dónde desea guardarlos y presione 'Convertir'.

Editar: una forma más rápida e indolora es simplemente seleccionar todas las imágenes que desee y presionar dos veces 'Rotar a la derecha y guardar' en la barra de herramientas. Debe ser no destructivo para archivos JPEG.

K. Minkov
fuente
3

Con Windows, puede marcarlos todos en el explorador, luego hacer clic derecho y elegir girar en el sentido de las agujas del reloj. Haga esto dos veces y sus imágenes ahora están orientadas correctamente.

Arjihad
fuente
2

¿Conoces GIMP? Hay un complemento llamado BIMP que le permite realizar la misma operación en un conjunto de imágenes, utilizando una interfaz gráfica. Puede instalarlo fácilmente utilizando el instalador oficial para Windows.

También puede volver a guardarlos en otro formato o con una relación de compresión diferente para evitar una gran pérdida de calidad.

Consejo profesional: lo hice: D

Lo inesperado
fuente
2
Creo que querías decir "Descargo de responsabilidad" en lugar de "Consejo profesional": p ¡Pero un gran software! He necesitado operaciones por lotes en GIMP de vez en cuando y recurrí a escribir código matlab en su lugar. Voy a tener su herramienta en mente para la próxima vez :)
Tasos Papastylianou
1

ImageMagick es un conjunto de herramientas de línea de comandos que funcionan en imágenes, y puede combinar esas herramientas con comandos básicos de shell de Unix para aplicar el mismo comando a un conjunto de archivos. Hay muchos buenos ejemplos en ¿Cómo rotar todas las imágenes en un directorio con imagemagick? .

Caleb
fuente
Um ... y si el OP está en Windows y no usa Cygwin ...? :) Es posible que desee agregar "y archivos por lotes de Windows" o expandir la respuesta para indicar que ImageMagick no es necesariamente una solución exclusiva de UNIX, solo una línea de comando.
inkista
1
Lo intentaré esta tarde. Hay binarios de Windows disponibles.
Johns-305
1

Yo personalmente uso Adobe Lightroom. Las imágenes se pueden rotar y editar fácilmente, simplemente seleccione las imágenes que desea rotar, haga clic con el botón derecho y seleccione la opción para transformar las imágenes girando 180 grados.

Si está trabajando constantemente con miles de imágenes que requieren procesamiento por lotes, particularmente si es más complejo que rotar, como ajustar el color o la exposición, entonces LR es probablemente una inversión sólida.

No me gusta que Lightroom sea de código cerrado, cueste dinero y no se ejecute en sistemas Linux. Sin embargo, he descubierto que las características exceden con mucho lo que está disponible de forma gratuita.

SB Ph.D.
fuente
0

Puede usar LiveBlox y construir una tubería para permitir la rotación de la imagen. La versión demo en http://liveblox.org tiene un bloque de rotación, por lo que permitirá que esto se haga.

Hay un tutorial https://www.youtube.com/watch?v=kY0e5msQuiU que muestra cómo hacer el cambio de tamaño de la imagen del lote, solo necesita reemplazar el tamaño de tamaño fijo con el rotador para hacer la rotación.

Esto le permitiría trabajar en cada imagen con un solo clic.

robby987
fuente
-1

$ para F en * jpg; do convert -rotate 180 $ F "$ (nombre base $ F .jpg) _R.jpg" && echo "Listo $ F"; hecho

Explicación: * para F en la porción .jpg del comando asigna el nombre de archivo a una variable, que se puede recuperar más tarde para cambiar el nombre del archivo a [nombre del archivo original} _R.jpg

el "do convert -rotate 180" le dice a la computadora que desea que sus imágenes se conviertan, al rotarlas 180 grados.

La parte "$ (nombre base $ F .jpg) _R.jpg" del comando indica el nuevo nombre del archivo.

El && le dice a la computadora que viene un comando adicional, pero que solo se le permite ejecutar el comando si el comando anterior (rotativo y renombrado) fue exitoso.

echo "Listo $ F" le dice a la computadora que le diga ("echo" a usted) que cada archivo ha sido rotado con éxito. La subparte $ F del comando está recuperando la variable inicial del nombre de archivo, por lo que la salida probablemente dirá algo en el sentido de "Done file1.jpg"

Y, uno necesita sh / csh / bash para que esta pieza funcione.

bluerizlagirl
fuente
55
Posiblemente funcione, pero sin una explicación, no es una buena respuesta. Explique en qué contexto esta solución, si corresponde.
nulo
1
¿Es esta una expansión de la respuesta nula usando ImageMagick?
MikeW
Esto no funciona como se esperaba si ya hay *_R.jpgarchivos en el directorio.
pts
Gracias por la aclaración, no estoy seguro de si la instalación de un shell de UNIX en Windows es un enfoque práctico, pero no lo es menos.
nulo el
pts, puedes cambiar el _R.jpg a lo que quieras (como "_rotated.jpg"). Tiene razón en que esto será problemático si ya tiene archivos _R.jpg en el directorio.
SB Ph.D.