All options can be abbreviated to their shortest unique prefix. You may use two hyphens instead of one to designate an option. You may use either white space or an equals sign between an option name and its value.
pnmremap replaces the colors in an input image with those from a colormap you specify. Where a color in the input is not in the colormap, you have three choices: 1) choose the closest color from the colormap; 2) choose the first color from the colormap; 3) use a color specified by a command option. (In this latter case, if the color you specify is not in your color map, the output will not necessarily contain only colors from the colormap).
Two reasons to do this are: 1) you want to reduce the number of colors in the input image; and 2) you need to feed the image to something that can handle only certain colors.
To reduce colors, you can generate the colormap with pnmcolormap. Example:
pnmcolormap testimg.ppm 256 >colormap.ppm pnmremap -map=colormap.ppm testimg.ppm >reduced_testimg.ppm
To limit colors to a certain set, a typical example is to create an image for posting on the World Wide Web, where different browsers know different colors. But all browsers are supposed to know the 216 "web safe" colors which are essentially all the colors you can represent in a PPM image with a maxval of 5. So you can do this:
pamseq 3 5 >websafe.pam pnmremap -map=webafe.pam testimg.ppm >websafe_testimg.ppm
Another useful colormap is one for the 8 color IBM TTL color set, which you can create with
pamseq 3 1 >ibmttl.pam
If you want to quantize one image to use the colors in another one, just use the second one as the mapfile. You don't have to reduce it down to only one pixel of each color, just use it as is.
The output image has the same type and maxval as the map file.
There is one parameter, which is required: The file specification of the input PNM file.
This option is mandatory.
Floyd-Steinberg gives vastly better results on images where unmodified quantization has banding or other artifacts, especially when going to a small number of colors such as the above IBM set. However, it does take substantially more CPU time.
-fs is a synomym for -floyd. -nofs is a synonym for -nofloyd.
The default is -nofloyd.
If you specify -firstisdefault, the maxval of your input must match the maxval of your colormap.
If you specify -missingcolor, the maxval of your input must match the maxval of your colormap.