This program is part of Netpbm(1).
This program tries to produce an accurate representation of a PPM image on an terminal that implements
the ANSI ISO 6429 standard. It approximates colors, finding the minimum Cartesian distance between the
input RGB vectors and the ones in the generated palette. As the available color palette is somewhat
restricted, you get the best results when the colors in the original image are few and the RGB
intensities are close to zero, half of maximum, and maximum.
You can usually get good results with cartoons or images with plain colors (no gradients). With photos,
results can vary, but are usually not very accurate.
The output image has one line for each row and one character for each column of the input image. E.g. an
80 pixel by 25 pixel PPM image would fill up an 80x25 terminal screen. Use pamscale or pamcut to make
your image fit properly on your screen.
Furthermore, use pamscale to recover the proper aspect ratio, because a character on a terminal screen is
rarely square. Typically, a character is twice has high as it is wide, so in order for a 20x20 image to
appear square on your terminal, as it should, you'll want to squash it vertically or stretch it
horizontally by a factor of two (resulting int 10x20 characters are 20x40 characters).
The image starts at the current cursor position on the terminal screen. Each successive row starts at
Column 0 on the screen. If you want to shift the image up or down, for example to center it, use pnmpad
on the input.
This program was born with the objective of displaying nice color images on the Linux console, e.g. a
proper logo at Linux boot.
ppmtoascii does a similar things, but combines 2 or 8 pixels into one character, where the character
roughly represents those particular pixels, whereas ppmtoterm displays each character of the image as a
single pixel.
pbmto4425 does a similar thing for black and white images, using line drawing characters, on some
terminals.