2012-11-09 6 views
22

Come si converte un'immagine RGB (3 canali) in una scala di grigi, utilizzando il metodo (r + g + b)/3? guardo attraverso una pagina di esempi: http://www.imagemagick.org/Usage/color_mods/#grayscale ma il metodo desiderato:Converti RGB in scala di grigi nella riga di comando ImageMagick

convert test.png -fx '(r+g+b)/3' gray_fx_average.png 

mi ha dato un risultato sbagliato - l'immagine ha ancora portato 3 canali.

È possibile controllare questo eseguendo un comando: identify -format "%[colorspace] <== %f\n" *.png.

risposta

50

convert <img_in> -set colorspace Gray -separate -average <img_out> dà il miglior risultato per qualsiasi immagine per me.

+0

Grazie egor7 :) comando egor7 funziona bene anche con ImageMagick 6.5.7 che ha un problema di restituire immagini molto scure quando si utilizza solo 'convertire - colorspace Grigio '. Sto usando rails + paperclip su heroku (imagemagick 6.5.8) e stavo ottenendo immagini molto scure con molte varianti differenti del comando 'convert'. Questo ha funzionato alla grande;) Grazie ancora. –

+5

Almeno nelle versioni più recenti di ImageMagick, sembra '... -set colorspace ...' dovrebbe essere '-colorspace'. –

7

L'utilizzo del metodo (r+g+b)/3 applicherà gli effetti della scala di grigi, ma l'immagine rimarrà in sRGB (quale è il comportamento previsto per questo metodo). Dovrai specificare lo colorspace desiderato insieme al comando -fx.

convert test.png -fx '(r+g+b)/3' -colorspace Gray gray_fx_average.png 

Verificare con identify -format "%[colorspace] <== %f\n" gray_fx_average.png

Gray <== gray_fx_average.png 
1

per convertire in batch le immagini in Fish shell:

for file in *.jpg; convert -colorspace Gray $file $file; end;