[Risolto] modificare la risoluzione di tutte le immagini contenute in una cartella

Installazione, configurazione e uso di programmi e strumenti.
Avatar utente
Sargonsei
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2536
Iscrizione: domenica 17 febbraio 2008, 13:56

[Risolto] modificare la risoluzione di tutte le immagini contenute in una cartella

Messaggio da Sargonsei »

So che, volendo usare FFmpeg, posso modificare la risoluzione di una singola immagine impartendo il comando

Codice: Seleziona tutto

ffmpeg -i foto.jpg -vf scale=900:-1 fotoLR.jpg # Modifica la risoluzione dell'immagine in modo che il lato maggiore sia di 900 pixels
Qualcuno sa dirmi quale comando impartire per modificare in massa tutte le immagini contenute in una cartella conservando le immagini di partenza e aggiungendo LR al nome delle immagini con risoluzione modificata?
Saluto sin d'ora chi mi aiuterà.
Sargonsei.
Ultima modifica di Sargonsei il lunedì 17 febbraio 2020, 18:42, modificato 1 volta in totale.
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
Avatar utente
maidasette
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3331
Iscrizione: domenica 25 giugno 2006, 9:27
Località: Trieste

Re: modificare la risoluzione di tutte le immagini contenute in una cartella

Messaggio da maidasette »

Lanci nella cartella uno script del genere:

Codice: Seleziona tutto

#!/bin/bash

for i in *.jpg; do ffmpeg -i "$i" -vf scale=900:-1 "${i%.*}LR.jpg"; done
Non l'ho testato, ma dovrebbe funzionare
Par le petit garçon qui meurt près de sa mère
Tandis que des enfants s'amusent au parterre; ...
Par les gosses battus par l'ivrogne qui rentre,...
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4457
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: modificare la risoluzione di tutte le immagini contenute in una cartella

Messaggio da UbuNuovo »

A parte che per fare rielaborazioni di immagini ci sarebbe uno strumento nato per questo scopo, imagemagick; contiene vari comandi specifici (convert, mogrify...).
Comunque, eseguendo quel codice c'è un problema; tutti i file vengono rielaborati, anche quelli che hanno già le dimensioni giuste, (cosa da evitare specialmente per i file jpg che ad ogni rielaborazione perdono dati), inoltre ti ritroveresti tutti i file con "LR".

Io controllerei prima le dimensioni, poi eseguirei ridimensionamento e rinomina ma solo se serve.
Farei così:

Codice: Seleziona tutto

#!/bin/bash

dir=img_orig	# directory contenente i file da elaborare
max=900			# lato massimo in px
ext=jpg			# estensione file

while read f;do
	ris=$(identify "$f" | awk '{print $3}')
	read width height < <(sed 's/x/ /' <<< "$ris")
	if [ $width -gt $max -o $height -gt $max ];then
		convert -resize "${max}x${max}" "$f" "$dir/$(basename "$f" ".$ext")_LR.$ext"
	fi
done < <(find "$dir" -maxdepth 1 -type f -iname "*.$ext" -print)
Personalizza le tre variabili ad inizio script: dir, max e ext in base ai criteri voluti.
Se cambi il valore di -maxdepth puoi aumentare il livello di profondità della ricerca di find nelle sottodirectory, se elimini del tutto l'opzione la ricerca non ha limiti di profondità.
Salva l'Ucraina! 🇺🇦
Avatar utente
Sargonsei
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2536
Iscrizione: domenica 17 febbraio 2008, 13:56

Re: [Risolto] modificare la risoluzione di tutte le immagini contenute in una cartella

Messaggio da Sargonsei »

Ringrazio entrambi per le informazioni fornite; mi avete risolto un problema.
La soluzione indicata da maidasette è veloce, ed utilizzabile da riga di comando per le immagini così come escono dalla fotocamera digitale.
La soluzione indicata da UbuNuovo è l'ideale quando ho nella stessa cartelle sia immagini già scalate, sia immagini ancora da scalare.

Per UbuNuovo: effettivamente FFmpeg è più adatto per i video, ma io cercavo una soluzione da applicare su un PC per il quale meno pacchetti installo, e meglio è, e con FFmpeg lavoro sia sulle immagini, sia sui video, quindi...
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
Scrivi risposta

Ritorna a “Applicazioni”

Chi c’è in linea

Visualizzano questa sezione: corradoventu e 17 ospiti