Come posso ruotare molte foto digitali di 180 gradi in una sola operazione?


20

Ho diverse migliaia di immagini scattate con una GoPro che sono capovolte.

Sto cercando un modo, un'app davvero, che può capovolgerli tutti, 180 gradi, in una sola operazione.

Ho esaminato ogni opzione nel software di GoPro, ma non lo trovo solo per immagini fisse. Puoi ruotare mentre realizzi un video, ma voglio mantenere le singole immagini.

Sono su Windows.



jpegtran è la strada da percorrere. può ruotare e / o capovolgere JPEG senza perdita di dati ed è facile da chiamare da uno script perché è un'app CLI.
Sarge Borsch,

Risposte:


31

Consiglierei una qualsiasi delle applicazioni di questo elenco su JPEGclub.org , che sviluppa e gestisce software per il gruppo JPEG indipendente. Hanno un pezzo di codice gratuito chiamato jpegtranche può fare alcune trasformazioni di base (come la rotazione) senza ricodificare l'immagine.

La rotazione delle immagini in modo "ingenuo" (rendering su bitmap, riorientamento della bitmap e nuovo salvataggio) può comportare un aumento degli artefatti JPEG e file più grandi con dati meno utili.

L'elenco sopra contiene software che è noto per farlo "nel modo giusto". Anche altri software (magari usando una base di codice diversa), purtroppo ImageMagick non è uno di questi. Tuttavia, a partire da agosto 2016, ci sono 87 opzioni diverse per molte piattaforme di elaborazione diverse, incluso Windows.


Nota dai commenti: l'OP ha utilizzato questo loop in base a questa risposta:

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

con buoni risultati.


1
Si noti che la rotazione senza perdita di dati funziona solo se ogni dimensione di ogni immagine è un multiplo di 16 pixel - 8 se il sottocampionamento Chroma non viene utilizzato. In caso contrario, i pixel in eccesso vengono persi o l'immagine verrà riempita con un bordo. Ad esempio, 1080 non è un multiplo di 16!
Gnubie,

2
Secondo la raccomandazione di jpegtran; ancora meglio, se ti interessa mantenere coerenti la miniatura e il Orientationtag di EXIF , potresti considerare exiftranche è inspiegabilmente assente dall'elenco di JPEGclub, ma è senza perdita di dati. Il mio comando (su Linux) per questo sarebbe exiftran -i -1 *.jpgo find . -name '*.jpg' -print0 | xjobs -0 -l 10 exiftran -i -1; questo dovrà adattarsi alla shell di Windows.
Toby Speight,

@Toby Buona aggiunta. Molti (la maggior parte?) Dei programmi elencati conserveranno e aggiorneranno anche i metadati, motivo per cui consiglio uno di essi invece che jpegtrandirettamente.
Mattdm,

Grazie! Ho usato jpegtran su Windows. La rotazione di 180 è esattamente ciò di cui avevo bisogno. Ho inserito il comando batch esatto nella domanda per riferimento futuro.
Johns-305,

@ Johns-305 Contento di aver potuto aiutare. Sulla modifica della domanda, vedi meta.photo.stackexchange.com/questions/1601/…
mattdm

9

È possibile utilizzare ImageMagick con l' rotateopzione :

convert image.jpg -rotate 180 result.jpg

Dovresti essere in grado di applicare questo comando a più file, a seconda del tuo ambiente.


10
Nota che questo ricodificherà il jpeg, perdendo qualità.
Mattdm,

8

Su Windows puoi farlo senza alcun software aggiuntivo in DUE operazioni. Seleziona i file che vuoi ruotare in Esplora file, fai clic con il pulsante destro del mouse e fai "ruota a destra" (o a sinistra) due volte. Sarà fatto senza perdite se l'immagine lo consente (ad esempio, le dimensioni non sono "divertenti").


Quali sono le dimensioni "divertenti"? Perché le dimensioni di una foto impediscono la rotazione senza perdita?
Scott

2
Dopo aver letto Le rotazioni di “Windows Photo Viewer” sono senza perdita? , Ora capisco. Entrambe le dimensioni devono essere un multiplo di 8 per poter essere ruotate senza perdita di dati.
Scott

1
Questa è la risposta migliore Ho aderito al sito solo per votare questo.
fi12,

5

Puoi usare xnview su Windows, che ha alcuni processi in modalità batch e, per una semplice rotazione delle immagini, hai la possibilità di ruotare le immagini in base ai dati exif.

Seleziona tutte le immagini (anche quelle orientate correttamente! Saprà che sono già ben orientate), "ruota in base a exif" e lo farà (senza ricalcolare il jpg, quindi senza perdita di qualità).

Come dicono su http://newsgroup.xnview.com/viewtopic.php?t=1420 :

Per fare ciò, selezionare tutte le immagini e selezionare "Strumenti> Trasformazioni senza perdita di dati JPG" (o l'elenco a discesa del simbolo "Trasformazioni senza perdita di dati JPG" nella barra degli strumenti). Nella finestra di dialogo selezionare il pulsante con "EXIF" su di esso, quindi premere "Vai". XnView ruoterà permanentemente le immagini in base al flag di orientamento EXIF. »

E per la prossima volta, se hai una gopro abbastanza recente, potresti voler controllare anche la sua funzionalità: https://gopro.com/support/articles/what-is-auto-image-rotation


La GoPro salva effettivamente i dati di orientamento EXIF ​​corretti? Hero4 / Session ha un sensore di orientamento, ma non credo che nessuno dei modelli precedenti lo faccia.
vclaw

4

Supponendo che le tue foto siano in formato JPEG, sono abbastanza parziale di JPEGCrops , uno strumento semplice e gratuito per l'elaborazione batch senza perdita di immagini.

È possibile ritagliare in base a proporzioni specifiche e / o ruotare.


4

Posso suggerire la modalità batch di Irfanview, che funziona solo su Windows. Anche Irfanview è utile per le modifiche semplici, ma non è GIMP.

Una volta installato, seleziona "File | Conversione batch / Rinomina". Da lì diventa un po 'complicato, devi selezionare tutti i file, devi specificare una cartella di destinazione e devi fare clic sul pulsante Avanzate per vedere le Opzioni avanzate. Può ruotare di +/- 90 °, ma per fare 180 ° dovrai scegliere la rotazione fine all'estrema destra ed entrare di 180 °. Nota che puoi anche ridimensionarli, cambiare la qualità JPEG e rinominarli.

Puoi anche farlo piuttosto rapidamente rimanendo nella GUI e usando la tastiera. Apri qualsiasi file nella cartella delle immagini. Premi "R" due volte per ruotare due volte. Quindi premere Ctrl-S per salvare. Verranno visualizzate due finestre, una la tipica finestra di dialogo del file e una seconda per la compressione JPEG (se il formato predefinito di GoPro è JPEG). Vorrei assicurarmi che il fattore qualità sia almeno del 90%. Quindi salva il file; dovresti essere in grado di premere il tasto Tab o Alt-S per salvare. Potrebbe essere visualizzata una finestra di dialogo di tipo "Sei sicuro" (potrebbe essere in grado di disattivarlo). Quindi, basta premere la barra spaziatrice per passare al file successivo nella cartella. Se hai più di 50 file, il batch potrebbe essere più veloce. Dieci file, faccio solo quanto sopra.

La cosa fondamentale di Irfanview è che è come Blender, non ti chiede se vuoi salvare se modifichi un'immagine.


3
Ciò comporterà una rotazione con perdita: mentre li ruota, quindi ripristina il JPEG, quindi stai perdendo qualità. In IrfanView, è meglio utilizzare la funzione "Rotazione senza perdita di dati JPEG" (Maiusc + J). Nota che puoi utilizzare la vista miniature per selezionare tutte le tue immagini, quindi ruotarle tutte in una volta.
vclaw

1
@RocketFeathers - Irfanview è lo strumento più semplice con cui farlo senza perdita di dati in un ambiente Windows. Ma come dice vclaw, è molto meglio usare "JPEG Lossless Rotation" per farlo. Modifica la tua risposta per rispecchiarla e la voterò.
Michael C,

"non ti chiede se vuoi salvare se modifichi un'immagine." - Questo può essere modificato in Opzioni> Proprietà / Impostazioni ...> Chiedi di salvare le modifiche all'uscita dal programma.
MrWhite,

3

FSViewer è un programma utile che può farlo.

Apri la cartella in cui si trovano le immagini, seleziona tutto ciò che vuoi ruotare, premi F4 e vai alla scheda 'Converti batch' nella finestra che si apre. Fai clic su "Opzioni avanzate" in basso a destra, vai alla scheda "Ruota". Seleziona "Capovolgi / Ruota", quindi "Ruota", quindi seleziona "180" in basso e premi OK. Imposta dove vuoi che vengano salvati e premi 'Converti'.

Modifica: un modo più rapido e indolore è solo selezionare tutte le immagini desiderate e premere due volte "Ruota a destra e salva" nella barra degli strumenti. Dovrebbe essere non distruttivo per i JPEG.


3

Con windows puoi contrassegnare tutto se in Explorer, quindi fare clic con il tasto destro e scegliere ruota in senso orario. Fallo due volte e le tue foto ora sono correttamente orientate.


2

Conosci GIMP? Esiste un plug-in chiamato BIMP che consente di eseguire la stessa operazione su un set di immagini, utilizzando un'interfaccia grafica. Puoi installarlo facilmente usando il programma di installazione ufficiale per Windows.

Puoi anche salvarli di nuovo in un altro formato o con un diverso rapporto di compressione per evitare grandi perdite di qualità.

Consiglio del professionista: ce l'ho fatta: D


2
Penso che volevi dire "Disclaimer" piuttosto che "Suggerimento Pro": p Ma un ottimo software! Di tanto in tanto ho avuto bisogno di operazioni batch su GIMP e invece ho fatto ricorso alla scrittura di codice matlab. Terrò a mente il tuo strumento per la prossima volta :)
Tasos Papastylianou,

1

ImageMagick è un insieme di strumenti da riga di comando che funzionano su immagini e che è possibile combinare questi strumenti con i comandi di base della shell Unix per applicare lo stesso comando a un insieme di file. Ci sono molti buoni esempi in Come ruotare tutte le immagini in una directory con imagemagick? .


Ehm ... e se l'OP è su Windows e non usa Cygwin ...? :) Potrebbe voler aggiungere "e file batch di Windows" o espandere la risposta per indicare che ImageMagick non è necessariamente una soluzione solo UNIX, solo una riga di comando.
Inkista,

1
Ci proverò questo pomeriggio. Sono disponibili file binari di Windows.
Johns-305,

1

Personalmente uso Adobe Lightroom. Le immagini possono essere facilmente ruotate in batch e modificate, basta selezionare le immagini che si desidera ruotare, fare clic con il tasto destro del mouse e selezionare l'opzione per trasformare le immagini ruotando di 180 gradi.

Se lavori costantemente con migliaia di immagini che richiedono l'elaborazione in batch, in particolare se è più complesso della rotazione, come la regolazione del colore o dell'esposizione, allora LR è probabilmente un investimento solido.

Non mi piace che Lightroom sia a codice chiuso, costa denaro e non funziona su sistemi Linux. Tuttavia, ho scoperto che le funzionalità superano di gran lunga ciò che è disponibile gratuitamente.


0

È possibile utilizzare LiveBlox e creare una pipeline per consentire la rotazione dell'immagine. La versione demo su http://liveblox.org ha un blocco di rotazione quindi consentirà di farlo.

C'è un tutorial https://www.youtube.com/watch?v=kY0e5msQuiU che mostra come realizzare il ridimensionamento dell'immagine in batch, dovrai solo sostituire il ridimensionamento a dimensione fissa con il rotatore per fare la rotazione.

Ciò ti consentirebbe di lavorare su ogni immagine con un solo clic.


-1

$ per F in * jpg; converti -rotate 180 $ F "$ (basename $ F .jpg) _R.jpg" && echo "Fatto $ F"; fatto

Spiegazione: * per F nella parte .jpg del comando assegna il nome file a una variabile, che può essere richiamata in seguito per rinominare il file in [nome file originale} _R.jpg

il "fare convertito -rotate 180" indica al computer che si desidera le immagini convertite, per essere ruotato di 180 gradi.

La parte "$ (basename $ F .jpg) _R.jpg" indica il nome del nuovo file.

Il && dice al computer di un comando aggiuntivo è in arrivo, ma che il computer è consentito solo per eseguire il comando se il precedente (rotazione e rinominare) il comando ha avuto successo.

echo "Fatto $ F" dice al computer di dirti ("echo" per te) che ogni file è stato ruotato con successo. La sotto-porzione $ F del comando richiama la variabile del nome file iniziale, quindi l'output probabilmente dirà qualcosa all'effetto di "Done file1.jpg"

E uno ha bisogno di sh / csh / bash per far funzionare questo pezzo.


5
Probabilmente funziona, ma senza una spiegazione non è una buona risposta. Spiegare in quale contesto questa soluzione, se applicabile.
null

1
Si tratta di un'espansione della risposta null utilizzando ImageMagick?
MikeW

Questo non funziona come previsto se ci sono già *_R.jpgfile nella directory.
punti

Grazie per il chiarimento, non sono sicuro che l'installazione di una shell UNIX su Windows sia un approccio pratico, ma non è meno.
null

pts, puoi cambiare _R.jpg come preferisci (come "_rotated.jpg"). Hai ragione che questo sarà problematico se hai già i file _R.jpg nella directory.
SB Ph.D.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.