This program is part of Netpbm(1).
pamdepth reads a Netpbm image as input, changes its depth (color resolution), and writes out the
resulting Netpbm image. I.e. the output has a different maxval from the input, but all the same colors
(apart from rounding error).
Reducing the depth results in some loss of information.
Here is an example of the effect at the image format level: Assume you start with an image with maxval
100 and sample values of 50 and 100. You tell pamdepth to change it to depth 150. The output has maxval
200 and sample values 75 and 150.
This program works on multi-image streams.
Be careful of off-by-one errors when choosing the new maxval. For instance, if you want the color values
to be five bits wide, use a maxval of 31, not 32.
One important use of pamdepth is to convert a new format 2-byte-per-sample PNM file to the older 1-byte-
per-sample format. Before April 2000, essentially all raw (binary) format PNM files had a maxval less
than 256 and one byte per sample, and many programs may rely on that. If you specify a newmaxval less
than 256, the resulting file should be readable by any program that worked with PNM files before April
2000.
OutputFormat
The output format (PBM, etc.) and, in the case of PAM, tuple type, of the output is usually the same as
the input.
However, changing the depth of a black and white image does not make sense, except to turn it into a
grayscale image, so if the input is a black and white image, pamdepth makes the output grayscale. To be
more precise, if the input is a PBM image, the output is PGM, and if the input is a PAM with tuple type
BLACK_AND_WHITE or BLACK_AND_WHITE_ALPHA, the output is a PAM with tuple type GRAYSCALE or
GRAYSCALE_ALPHA, respectively.
This conversion happens even if the new maxval is 1.
Before Netpbm 10.92 (September 2020), pamdepth failed if the input was PAM with a black and white tuple
type and the new maxval was anything but 1. But it always promoted PBM to PGM.