pnmscale - scale a PNM image


pnmscale scale_factor [''pnmfile''? pnmscale -reduce reduction_factor [''pnmfile''? pnmscale [{__-xsize=__''cols''? [{__-ysize=__''rows'' | __-height=__''rows''? [''pnmfile''? pnmscale -xysize cols rows [''pnmfile''? pnmscale -pixels n [''pnmfile''?

Miscellaneous options:__

  • verbose__

Minimum unique abbreviation of option is acceptable.


Reads a PBM, PGM, or PPM image as input, scales it by the specified factor or factors and produces a PGM or PPM image as output. If the input file is in color (PPM), the output will be too, otherwise it will be grayscale (PGM). This is true even if the input is a black and white bitmap (PBM), because the process of scaling can turn a combination of black and white pixels into a gray pixel.

If you want PBM output, use pgmtopbm to convert pnmscale's output to PBM. Also consider pbmreduce.

You can both enlarge (scale factor

When you specify an absolute size or scale factor for both dimensions, pnmscale scales each dimension independently without consideration of the aspect ratio.

If you specify one dimension as a pixel size and don't specify the other dimension, pnmscale scales the unspecified dimension to preserve the aspect ratio.

If you specify one dimension as a scale factor and don't specify the other dimension, pnmscale leaves the unspecified dimension unchanged from the input.

If you specify the scale_factor parameter instead of dimension options, that is the scale factor for both dimensions. It is equivalent to -xscale=scale_factor -yscale=scale_factor .

Specifying the -reduce reduction_factor option is equivalent to specifying the scale_factor parameter, where scale_factor is the reciprocal of reduction_factor.

-xysize specifies a bounding box. pnmscale scales the input image to the largest size that fits within the box, while preserving its aspect ratio.

-pixels specifies a maximum total number of output pixels. pnmscale scales the image down to that number of pixels. If the input image is already no more than that many pixels, pnmscale just copies it as output; pnmscale does not scale up with -pixels.

If you enlarge by a factor of 3 or more, you should probably add a pnmsmooth step; otherwise, you can see the original pixels in the resulting image.


pnmscale uses floating point arithmetic internally. There is a speed cost associated with this. For some images, you can get the acceptable results (in fact, sometimes identical results) faster with pnmscalefixed, which uses fixed point arithmetic. pnmscalefixed may, however, distort your image a little. See pnmscalefixed's man page for a complete discussion of the difference.


pnmscalefixed(1), pnminterp(1), pbmreduce(1), pnmenlarge(1), pnmsmooth(1), pnmcut(1), __pnm(5)?__


Copyright (C) 1989, 1991 by Jef Poskanzer.

This page is a man page (or other imported legacy content). We are unable to automatically determine the license status of this page.

lib/main.php:944: Notice: PageInfo: Cannot find action page

lib/main.php:839: Notice: PageInfo: Unknown action