How can I convert a JPEG photo to black and white (not grayscale) image like output of a FAX scanner, by ImageMagick?
4 Answers
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>
-
1Note 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) Dec 22, 2015 at 15:22 -
Good answer as it gives 2 options that produce different output and you can choose the best result– golimarJul 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).