Convert RGB to Grayscale in ImageMagick command-line

To batch convert images in Fish shell:

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


Using the (r+g+b)/3 method will apply the effects of grayscale, but the image will remain in sRGB (which is the expected behavior for this method). You'll need to specify the desired colorspace along with the -fx command.

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

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

Gray <== gray_fx_average.png

convert <img_in> -set colorspace Gray -separate -average <img_out> gives the best result for any image for me.