[risolto] imagemagick, ridimensionare immagini

Installazione, configurazione e utilizzo di applicativi multimediali, masterizzazione, acquisizione e codec audio/video, streaming e altro.
Kikkas
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 661
Iscrizione: martedì 24 marzo 2009, 22:34

[risolto] imagemagick, ridimensionare immagini

Messaggio da Kikkas »

Salve a tutti, ho provato a cercare un soluzione, ma non ne sono stato capace, sebbene la cosa non è tanto difficile

ho qualche centinaio di immagini in png, e le vorrei portare tutte alla dimensione comunque 772x1024
le immagini, attualmente, dovrebbero avere tutte le dimensioni
2400x3155, 779x1024, 2400x3154, 772x1024

tramite il comando identify (di imagemagick), è possibile farsi dare molte informazione di ogni immagine, tra cui anche la sua dimensione (larghezzaxaltezza), come ad esempio:

Codice: Seleziona tutto

001-fs8.png PNG 779x1024 779x1024+0+0 8-bit PseudoClass 128c 264KB 0.010u 0:00.000
dal momento che i rapporti sono i seguenti
2400/3155=0.7607
779/1024=0.76074
2400/3154=0.76094
772/1024=0,7539
per evitare che le immagini appaiono tirate
pensavo di ridurre le dimensioni dell'immagine (usando mogrify -resize)  a 779x1024, per le immagini che hanno dimensione maggiore di 779x1024
successivamente di tagliare le dimensioni (usando mogrify -crop) a 772x1024 per le immagini che hanno dimensione 779x1024
ovviamente quelle con dimensione 772x1024 le lascio inalterata

Visto che le immagini non sono ordinate per dimensione, come faccio da identify ad estrarre soltanto la dimensione, in modo da poter scrivere un ciclo con un if-else?
Ultima modifica di Kikkas il venerdì 13 aprile 2012, 0:49, modificato 1 volta in totale.
patel
Accecante Asceta
Accecante Asceta
Messaggi: 23782
Iscrizione: martedì 15 aprile 2008, 20:27
Località: Livorno

Re: imagemagick, ridimensionare immagini

Messaggio da patel »

hai provato a dare una sola dimensione invece di 2 ? di solito l'altra viene calclata automaticamente per rispettare il rapporto.
Un titolo ben azzeccato attira l'attenzione degli esperti in quel campo, fa risparmiare tempo a voi, aumenta la probabilità di successo.
Kikkas
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 661
Iscrizione: martedì 24 marzo 2009, 22:34

Re: imagemagick, ridimensionare immagini

Messaggio da Kikkas »

come faccio a dare solo una dimensione? scusa la domanda nubbia, ma per dare le due dimensioni do

mogrify -resize 772x1024 001.png

però anche se dessi solo una delle due cose (larghezza o altezza) dovrei poi ritagliare per avere la dimensione 772x1024, in tal caso devo comunque controllare le dimensioni per sapere quali tagliare e quali no. Altrimenti, scusami, ma non ho capito il tuo consiglio..
Avatar utente
filo1234
Rampante Reduce
Rampante Reduce
Messaggi: 6172
Iscrizione: lunedì 26 febbraio 2007, 21:10
Località: Cagliari

Re: imagemagick, ridimensionare immagini

Messaggio da filo1234 »

Visto che le immagini non sono ordinate per dimensione, come faccio da identify ad estrarre soltanto la dimensione, in modo da poter scrivere un ciclo con un if-else?

Codice: Seleziona tutto

identify -verbose immagine.jpg | grep Geometry | awk '{print $2}' | cut -d "+" -f1
con questa stringa dovresti riuscire ad ottenere quello che ti serve
Kikkas
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 661
Iscrizione: martedì 24 marzo 2009, 22:34

Re: imagemagick, ridimensionare immagini

Messaggio da Kikkas »

Si funziona,

quindi, ora all'interno del ciclo posso scrivere (supponendo che $i contenga il nome del file) qualcosa di analogo a

Codice: Seleziona tutto

j=identify -verbose "$i" | grep Geometry | awk '{print $2}' | cut -d "+" -f1
if [ $j=2400x3155 -o $j=2400x3154 ]; then mogrify -resize 779x1024 "$i"; mogrify -crop 772x1024 "$i"; fi;
else if [ $j=779x1024  ] then then mogrify -crop 772x1024 "$i"; fi;
Ultima modifica di Kikkas il venerdì 13 aprile 2012, 0:50, modificato 1 volta in totale.
Avatar utente
BlueEyes
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1330
Iscrizione: giovedì 15 marzo 2012, 14:08

Re: imagemagick, ridimensionare immagini

Messaggio da BlueEyes »

Kikkas ha scritto: come faccio a dare solo una dimensione? scusa la domanda nubbia, ma per dare le due dimensioni do
mogrify -resize 772x1024 001.png
però anche se dessi solo una delle due cose (larghezza o altezza) dovrei poi ritagliare per avere la dimensione 772x1024, in tal caso devo comunque controllare le dimensioni per sapere quali tagliare e quali no. Altrimenti, scusami, ma non ho capito il tuo consiglio..
Il comando ad una dimensione deve essere dato così:

Codice: Seleziona tutto

mogrify -resize 1024x1024 *.png  // significa che il lato lungo (verticale o orizzontale che sia) si mantiene
                                 // costantemente uguale a 1024 pixel
Anche se il tuo quesito è diverso, ti invito a provarlo. Ciao
Ultima modifica di BlueEyes il venerdì 13 aprile 2012, 10:21, modificato 1 volta in totale.
Kikkas
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 661
Iscrizione: martedì 24 marzo 2009, 22:34

Re: [risolto] imagemagick, ridimensionare immagini

Messaggio da Kikkas »

Grazie, comando da segnarsi ;)
Scrivi risposta

Ritorna a “Multimediale”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 5 ospiti