How can I convert a JPEG photo to black and white (not grayscale) image like output of a FAX scanner, by ImageMagick?


4 Answers 4


According to this forum post:

However, if you want two colors only (black and white), then you need to threshold. For example, to select the color where above will be white and below will be black.

convert <input> -threshold xx% <output>

where xx is in range 0-100 (for percent).


Dithering is clearer and more fax-like than a threshold cutoff:

convert <input> -monochrome <output>

For a less contrasty but more information-preserving kind of dithering, use:

convert <input> -remap pattern:gray50 <output>


  • 1
    Note that if the output looks low-quality, you may need to set the density higher using the flag -density 150 (the 150 is a dpi value) Commented Dec 22, 2015 at 15:22
  • Good answer as it gives 2 options that produce different output and you can choose the best result
    – golimar
    Commented Jul 31, 2021 at 10:38

According to this answer here:

If you have imagemagick installed:

true grayscale only:

convert source.jpg -colorspace Gray destination.jpg

true black and white:

convert source.jpg -monochrome destination.jpg

separate into gray channels:

convert source.jpg -separate destination.jpg

I believe that Netpbm's pamthreshold is a much faster and more flexible solution.

For TIFF files, I do

 $ tifftopnm test.tiff | pamthreshold | pamtotiff > bitonal.tiff

For Jpeg files you can do

$ jpegtopnm test.jpeg | pamthreshold | pamtotiff > bitonal.tiff

Pamthreshold is rather powerful (take a look at its man page).

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .