Scroll to navigation

Pamtopnm User Manual(1) General Commands Manual Pamtopnm User Manual(1)


pamtopnm - convert PAM image to PBM, PGM, or PPM





Minimum unique abbreviation of option is acceptable. You may use double hyphens instead of single hyphen to denote options. You may use white space in place of the equals sign to separate an option name from its value.


This program is part of Netpbm(1).

pamtopnm reads a PAM image as input and produces an equivalent PBM, PGM, or PPM (i.e. PNM) image, whichever is most appropriate, as output.

pamtopnm assumes the PAM image represents the information required for a PBM, PGM, or PPM image if its tuple type is "BLACKANDWHITE", "GRAYSCALE", or "RGB" and its depth and maxval are appropriate. If this is not the case, pamtopnm fails.

However, you can override the tuple type requirement with the -assume option.

pamtopnm produces a PPM image if the input PAM has depth 3 or 4; it produces PGM or PBM if the input PAM has depth 1 or 2. Whether it produced PGM or PBM depends upon the maxval: PBM for 1, PGM for anything higher. The tuple type does not play a role in determining the output type. You can use Netpbm programs such as pgmtopgm to generate a different PNM output, but remember that Netpbm program that expects PGM input will take PBM and so on.

Note that it's possible for an image which is formally color to in fact contain only shades of gray and for an image which is formally grayscale to contain only black and white. This program pays no attention to that; an RGB input image produces a PPM output image even if all the pixels are gray. But you can use ppmtopgm to convert a PPM that you know is grayscale to the equivalent PGM, and you can use pamthreshold to convert a PGM image you know is black and white to a black and white PAM image and then use pamtopnm to convert that to PBM.

As with any Netpbm program that reads PAM images, pamtopnm also reads PNM images as if they were PAM. In that case, pamtopnm's functions reduces to simply copying the input to the output. But this can be useful in a program that doesn't know whether its input is PAM or PNM but needs to feed it to a program that only recognizes PNM.


In addition to the options common to all programs based on libnetpbm (most notably -quiet, see
Common Options
), pamtopnm recognizes the following command line option:

When you specify -assume, you tell pamtopnm that you personally vouch for the fact that the tuples contain the same data as belongs in the channels of a PBM, PGM, or PPM file. The depth must still conform, though, so to truly force a conversion, you may have to run the input through pamchannel first. But be careful with -assume. When you -assume, you make an -ass of u and me.


pbmtopgm(1), pamditherbw(1), pgmtoppm(1), ppmtopgm(1), pamthreshold(1), pam(1), pnm(1), pbm(1), pgm(1), ppm(1)


pamtopnm was new, along with the PAM format, in Netpbm 9.7 (August 2000).


This manual page was generated by the Netpbm tool 'makeman' from HTML source. The master documentation is at
02 February 2018 netpbm documentation