2012-11-09 11 views
22

Wie konvertiere ich ein RGB-Bild (3 Kanäle) in einen Graustufenbild mit der Methode (r + g + b)/3? Ich sehe durch eine Seite Beispiele: http://www.imagemagick.org/Usage/color_mods/#grayscale aber die gewünschte Methode:Konvertieren von RGB in Graustufen in der ImageMagick-Befehlszeile

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

gab mir ein falsches Ergebnis - die resultierende Bild hat noch 3 Kanäle.

Sie können dies überprüfen, indem Sie einen Befehl ausführen: identify -format "%[colorspace] <== %f\n" *.png.

Antwort

50

convert <img_in> -set colorspace Gray -separate -average <img_out> für mich das beste Ergebnis für jedes Bild gibt.

+0

Dank egor7 :) egor7 Befehl funktioniert gut, auch mit ImageMagick 6.5.7, die ein Problem der Rückkehr sehr dunkle Bilder hat, wenn ' mit nur konvertieren - Farbraum Grau '. Ich benutze rails + paperclip auf heroku (imagemagick 6.5.8) und bekomme sehr dunkle Bilder mit vielen verschiedenen Varianten des 'convert' Befehls. Dieser hat super funktioniert;) Danke nochmal. –

+5

Zumindest in neueren Versionen von ImageMagick scheint '... -set colorspace ...' '' colorspace' 'zu sein. –

7

Die Methode (r+g+b)/3 wendet die Effekte von Graustufen an, aber das Bild bleibt in sRGB (, das ist das erwartete Verhalten für diese Methode). Sie müssen den gewünschten colorspace zusammen mit dem -fx Befehl angeben.

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

Stellen Sie sicher, mit identify -format "%[colorspace] <== %f\n" gray_fx_average.png

Gray <== gray_fx_average.png 
1

Batch-Konvertierung von Bildern in Fish Shell:

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

Verwandte Themen