This program is part of Netpbm(1).
pbmtoascii reads a PBM image as input and produces a somewhat crude ASCII graphic image as output.
To convert back, use asciitopgm(1).
ppmtoterm does a similar thing for color images to be displayed on color text terminals.
The -1x2 and -2x4 options give you two alternate ways for the pixels to get mapped to characters. With 1x2, the default, each character represents a group of 1 pixel across by 2 pixels down. With -2x4, each character represents 2 pixels across by 4 pixels down. With the 1x2 mode you can see the individual pixels, so it's useful for previewing small images on a non-graphics terminal. The 2x4 mode lets you display larger images on a small display, but it obscures pixel-level details. 2x4 mode is also good for displaying PGM images:
pamscale -width 158 | pnmnorm | pamditherbw -threshold | pbmtoascii -2x4
should give good results.