Man Linux: Main Page and Category List

NAME

       pnmscale - scale a portable anymap

SYNOPSIS

       pnmscale scale_factor [pnmfile]
       pnmscale -reduce reduction_factor [pnmfile]
       pnmscale [{-xsize=cols | -width=cols | -xscale=factor}] [{-ysize=rows |
       -height=rows | -yscale=factor}] [pnmfile]
       pnmscale -xysize cols rows [pnmfile]
       pnmscale -pixels n [pnmfile]

       Miscellaneous options:
       -verbose -nomix

       Minimum unique abbreviation of  option  is  acceptable.   You  may  use
       double  hypens 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.

DESCRIPTION

       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 > 1) and reduce (scale factor < 1).

       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.

       When the scale factor is not an integer (including all cases of scaling
       down), there are two ways to do the scaling.  Which one  pnmscale  does
       is controlled by its -nomix option.

       By  default,  pnmscale  mixes  the colors of adjacent pixels to produce
       output pixels that contain  information  from  multiple  input  pixels.
       This  makes  the  image  look  more  like  it  would if it had infinite
       resolution.  Note that it means the  output  may  contain  colors  that
       aren’t in the input at all.

       But  if  you  specify -nomix, pnmscale never mixes pixels.  Each output
       pixel is derived from one input pixel.  If you’re  scaling  up,  pixels
       get duplicated.  If you’re scaling down, pixels get omitted.  Note that
       this means the image is rather distorted.   If  you  scale  up  by  1.5
       horizontally,  for  example, the even numbered input pixels are doubled
       in the output and the odd numbered ones are copied singly.

       When the scale factor is an integer (which means  you’re  scaling  up),
       the  -nomix  option  has  no  effect -- output pixels are always just N
       copies of the input pixels.   In  this  case,  though,  consider  using
       pamstretch  instead  of  pnmscale  to get the added pixels interpolated
       instead of just copied and thereby get a smoother enlargement.

       pnmscale with -nomix is faster than without, but pnmenlarge  is  faster
       still.  pnmenlarge works only on integer enlargements.

       A  useful  application  of pnmscale is to blur an image.  Scale it down
       (without -nomix ) to discard some information, then scale  it  back  up
       using pamstretch.

       Or scale it back up with pnmscale and create a "pixelized" image, which
       is sort of a computer-age version of blurring.

   PRECISION
       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.

SEE ALSO

       pnmscalefixed(1),     pamstretch(1),    pbmreduce(1),    pnmenlarge(1),
       pnmsmooth(1), pnmcut(1), pnm(5)

AUTHOR

       Copyright (C) 1989, 1991 by Jef Poskanzer.

                               04 November 2000                    pnmscale(1)