2012-09-14 3 views
17

Stavo seguendo questo esempio http://cubiq.org/create-fixed-size-thumbnails-with-imagemagick, ed è esattamente ciò che voglio fare con l'immagine, con l'eccezione di avere gli avanzi di sfondo (cioè i bordi bianchi). C'è un modo per farlo e forse ritagliare lo sfondo bianco? c'è un altro modo per fare ciò? La ridimensionamento deve essere proporzionale, quindi non voglio solo impostare un limite di ridimensionamento della larghezza o un limite di altezza, ma ridimensionare proporzionalmente l'immagine.ImageMagick: Come ridimensionare proporzionalmente con mogrify senza sfondo

risposta

25

L'esempio si collega agli usi questo comando:

mogrify    \ 
    -resize 80x80  \ 
    -background white \ 
    -gravity center \ 
    -extent 80x80  \ 
    -format jpg  \ 
    -quality 75  \ 
    -path thumbs  \ 
    *.jpg 

In primo luogo, mogrify è un po 'pericoloso. Manipola gli originali in linea e sovrascrive gli originali. Se qualcosa va storto, hai perso gli originali e ti sei bloccato con i risultati errati. Nel tuo caso la -path thumbs però allevia questo pericolo, perché si assicura i risultati verranno scritti directory sub pollici

Un altro comando ImageMagick, convert, può mantenere gli originali e fare la stessa manipolazione come mogrify:

convert    \ 
    input.jpg  \ 
    -resize 80x80  \ 
    -background white \ 
    -gravity center \ 
    -extent 80x80  \ 
    -quality 75  \ 
    thumbs/output.jpg 

Se vuole lo stesso risultato , ma non solo le estensioni bianca tela (originariamente aggiunto per rendere l'immagine un quadrato 80x80 risultato), tralasciando il parametro -extent 80x80 (la -background white e gravity center un re superfluo troppo):

convert    \ 
    input.jpg  \ 
    -resize 80x80  \ 
    -quality 75  \ 
    thumbs/output.jpg 

o

mogrify    \ 
    -resize 80x80  \ 
    -format jpg  \ 
    -quality 75  \ 
    -path thumbs  \ 
    *.jpg 
+0

Grazie, Kurt, affronterò il problema mogrify. Non ero molto sicuro di quale fosse la differenza tra esso e la conversione, ma in realtà ho impostato il -path per ogni evenienza. Certamente non volevo sovrascrivere i file immagine master. – cj5

6

So che questo è un vecchio thread, ma utilizzando il flag -write con la bandiera-set, si può scrivere su file nella stessa directory senza sovrascrivere i file originali:

mogrify -resize 80x80 \ 
-set filename:name "%t_small.%e" \ 
-write "%[filename:name]" \ 
*.jpg 

Come osservato al http://imagemagick.org/script/escape.php,% t è il nome del file senza estensione e il% e è l'estensione. Quindi l'output di image.jpg sarebbe una miniatura image_small.jpg.

6

Questo è il comando che utilizzo ogni volta che desidero ridimensionare in batch tutto a 1920x e mantenere le proporzioni.

mogrify -path. -risposta 1920x1920 -formato "_resized.jpg" -qualità 70 * .jpg

+1

In realtà '-resize 1920x1920' mantiene le proporzioni, risultando in' max (larghezza, altezza) 'pari a 1920. –