Come ordinare le immagini in cartelle, in base alla risoluzione?


9

Sfondo: ho una cartella piena di immagini desktop salvate. Vorrei metterli in cartelle, in base alla loro risoluzione - 1024x768, ecc. La creazione di cartelle al volo è un vantaggio. Attualmente, le immagini sono tutte in una cartella, ma alcune sono in sottocartelle. Posso unirle a mano, se ciò semplifica le cose.

Preferirei il terminale, anche se sono ancora una specie di principiante. Non sono affatto un programmatore, davvero.

Sto usando Mac OS X, ma non sono contrario all'installazione di app extra per raggiungere questo obiettivo (MacPorts?), O anche usando un altro sistema operativo (ho installato Windows XP, Windows Vista e Ubuntu 9 in VMWare ).

Qualsiasi aiuto sarebbe apprezzato! Grazie!

Risposte:


11

So che è un argomento di oltre un anno (mi dispiace per quello) ma penso che qualcuno potrebbe aver bisogno dell'intero script funzionante, quindi eccolo qui. Prendendo le idee qui e compilando in una sceneggiatura otteniamo.

#!/bin/bash

for image in *.jpg;
    do res=$(identify -format %wx%h\\n $image);
    mkdir -p $res;
    mv $image $res;
done

4

Seriamente, grazie per la risposta, a tutti! Sono tornato a questo, più esperto, e la maggior parte dei commenti qui ha più senso ora.

Ho modificato leggermente lo script di @ zatatlan per contenere gli spazi nei nomi dei file e aggiungere altre estensioni di file.

#!/bin/bash

shopt -s nullglob # The script spits errors if this is not set and there are, say, no *.png files.
for image in *.jpg *.JPG *.jpeg *.JPEG *.gif *.GIF *.bmp *.BMP *.png *.PNG;
    do res=$(identify -format %wx%h\\n "$image");
    mkdir -p $res;
    mv "$image" $res;
done

3

È possibile utilizzare imagemagick per rilevare la risoluzione dell'immagine . Avvolgilo in un ciclo bash e il gioco è fatto. Non aspetterò fino a quando non torno a casa a una conchiglia, quindi ecco qualcosa che mi manca. La sintassi è probabilmente sbagliata, ma potrebbe darti alcuni indizi.

for image in $(`*.jpg`) do
   res=`identify $image | grep -o 'Resolution:'`
   if [ ! -d $res ]; then
     mkdir $res
   fi

   mv $image $res
done

Lo script crea directory al volo. Sia bash che imagemagick sono disponibili per mac.


Puoi rendere lo script un po 'più breve e semplice sostituendo il ifblocco con un semplice mkdir -p $res.
Ryan C. Thompson,

2

C'è Amok EXIF ​​Sorter

AmoK Exif Sorter può rinominare le immagini e spostarle o copiarle in cartelle arbitrarie.
Le cartelle possono essere nominate in base ai dati exif.

Offre un'anteprima in tempo reale dei nomi dei file, un visualizzatore integrato di dati e immagini exif, trascinamento della selezione, visualizzazione miniature, controllo automatico degli aggiornamenti e profili per diverse telecamere e utenti.

Supporta anche file video per data di creazione, file formattati IPTC.

Scritto in JAVA , funziona su tutte le piattaforme di supporto JRE5.
Controlla l'elenco delle funzionalità sul link.

Non scoraggiarti dalla lingua tedesca.
Trascina verso il basso Sprachee seleziona Englisch, riavvia l'applicazione.


1

Il comando identifica ImageMagick può fornire la larghezza e l'altezza in pixel, ad es

~$ identify -format %w_%h\\n *jpg 
2868_3429
1056_960

Puoi metterlo in uno script bash come parte di un ciclo for e, per sicurezza, copiare i file in una directory che ha lo stesso nome della risoluzione (controlla se esiste e crea se no).


0

Un modo di base che fornirà un ordine approssimativo di risoluzione è quello di organizzare in base alle dimensioni del file. Questo è qualcosa che dovrebbe essere integrato in qualsiasi sistema operativo, quindi non è necessario nulla di speciale. Il grande problema è che il formato per le tue foto dovrebbe essere lo stesso per funzionare. Questa non è una soluzione perfetta, ma può essere un semplice stop-gap fino a quando non trovi qualcosa che si adatta effettivamente al conto.

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.