Trova e rimuovi tutte le foto al di sotto di una determinata soglia di dimensione

4

Quindi, ho avuto un collasso del disco rigido di un parente, e ho usato photorec per cercare i file più ovvi per conservare (fortunatamente avevano solo immagini sul computer, tutto il resto era sincronizzato su cloud, come la posta elettronica) quindi ora ho una cartella principale con 208 sottocartelle di tutti i file PNG e JPG della vecchia unità. Ovviamente molto sarà o "OS e Application images" (barre degli strumenti, immagini di esempio, miniature, cache di sistema) e alcuni saranno "foto di famiglia".

Se riesco a trovare un modo per trovare tutto al di sotto di una certa dimensione (preferibilmente dire 300px in larghezza), l'ordinamento del resto dovrebbe * essere facile.

Come posso utilizzare iPhoto o Spotlight o qualcosa per farlo automaticamente? Sono anche aperto agli script usando librerie facilmente installate (brew forse?), Se è possibile indicare uno script di qualche tipo.

* famose ultime parole

    
posta jcolebrand 09.04.2013 - 20:58
fonte

2 risposte

7

Puoi usare il terminale per farlo. Il seguente comando dovrebbe funzionare:

find /path/to/the/folder \
  -name "*.jpg" \
  -exec bash -c "sips -g pixelHeight -g pixelWidth {} | grep -E ' [12]?[0-9]{0,2}$' >/dev/null" \;\
  -print 

Questo comando troverà tutti i file JPEG sotto /path/to/the/folder che hanno una larghezza o un'altezza compresa tra 1 e 299 pixel.

Sostituisci /path/to/the/folder con il percorso effettivo della tua cartella.

Puoi cambiare "*.jpg" in "*.gif" per trovare invece i file GIF.

Puoi cambiare [12]?[0-9]{0,2} per cambiare la dimensione delle immagini che desideri localizzare. Ad esempio, per trovare immagini più piccole di 500 pixel, usa [1234]?[0-9]{0,2}

Se vuoi controllare quali immagini trova questo comando, usa:

find /path/to/the/folder \
  -name "*.jpg" \
  -exec bash -c "sips -g pixelHeight -g pixelWidth {} | grep -E ' [12]?[0-9]{0,2}$' >/dev/null" \; \
  -exec mv {} /path/to/some/other/folder \; 

Sostituisci path/to/some/other/folder con la cartella in cui vuoi spostare i file, e quel comando sposterà i file che trova lì.

Il modo in cui funziona è il seguente:

Il comando sips è il sistema di elaborazione delle immagini per script . Il comando terminale sips -g pixelHeight -g pixelWidth some.jpg stamperà la larghezza e l'altezza del file JPEG.

Il comando find , come ci si potrebbe aspettare, trova i file. -exec passato a find dice find per eseguire il comando specificato e restituisce solo i file per i quali il comando restituisce un risultato positivo.

Il comando bash -c "sips -g pixelHeight -g pixelWidth {} | grep -E ' [12]?[0-9]{0,2}$' richiama una shell, esegue sips per ottenere la dimensione dell'immagine, quindi esegue grep , che ricerca il testo, chiedendo grep per cercare un 1 o un 2 seguito da zero e due cifre (% da% di% a% di% di co_de). Questa è una espressione regolare e corrisponde ai numeri (stringhe)% da0 a 9

    
risposta data 09.04.2013 - 21:22
fonte
1

In Aperture puoi farlo. E altro!

Passaggio 1

  1. Importa tutti i file in Aperture.
  2. Utilizza la visualizzazione elenco.
  3. Fare clic su un criterio per la dimensione dell'immagine per ordinare secondo tali criteri. Nota pixel dimension è probabilmente il metodo migliore da usare.

  4. Seleziona tutti i file al di sotto della dimensione minima.

  5. Elimina

Ora per il passaggio 2 supponendo che si tratti di foto di famiglia.

  1. Attiva il riconoscimento del volto in Aperture, assegna nomi a tutti volti riconoscibili.
  2. Attendi fino a quando la libreria non è stata elaborata. Potrebbe volerci un po 'di tempo a seconda del numero di file.
  3. Ora puoi ordinare per viso. (forse creare un album intelligente per ciascuno faccia)
  4. Seleziona tutte le foto che contengono una faccia particolare.
  5. Batch cambia metadati ( shift + cmd + b ), aggiungi una parola chiave adatta per ogni faccia.

Ora puoi esportare i tuoi file in cartelle adatte a seconda di chi si trova in ogni cartella. Più una cartella di file senza nessuno in essi.

    
risposta data 02.07.2013 - 15:37
fonte

Leggi altre domande sui tag