Provided by: netpbm_10.97.00-2_amd64 bug

NAME

       pnmrotate - rotate a PNM image by some angle

SYNOPSIS

       pnmrotate [-noantialias] [-background=color] angle [pnmfile]

DESCRIPTION

       This program is part of Netpbm(1).

       pnmrotate  reads  a PNM image as input.  It rotates it by the specified angle and produces
       the same kind of PNM image as output.

       The input is the file named by pnmfile or Standard Input if  you  don't  specify  pnmfile.
       The output goes to Standard Output.

       The  resulting image is a rectangle that contains the (rectangular) input image within it,
       rotated with respect to its bottom edge.  The containing rectangle is as small as possible
       to  contain  the  rotated image.  The background of the containing image is a single color
       that pnmrotate determines to be the background color of the original image,  or  that  you
       specify explicitly.

       angle  is  in  decimal  degrees  (floating  point), measured counter-clockwise.  It can be
       negative, but it should be between -90 and 90.

       You should use pamflip instead for rotations that are a multiple of a quarter turn.  It is
       faster and more accurate.

       For  rotations greater than 45 degrees you may get better results if you first use pamflip
       to do a 90 degree rotation and  then  pnmrotate  less  than  45  degrees  back  the  other
       direction.

       The  rotation  algorithm is Alan Paeth's three-shear method.  Each shear is implemented by
       looping over the source pixels and distributing  fractions  to  each  of  the  destination
       pixels.   This  has  an  "anti-aliasing"  effect  -  it  avoids  jagged  edges and similar
       artifacts.  However, it also means that the original colors or gray levels  in  the  image
       are  modified.   If  you  need  to  keep precisely the same set of colors, you can use the
       -noantialias option.

       The program runs faster and uses less real memory with the -noantialias option.  It uses a
       large  amount  of  virtual  memory either way, as it keeps a copy of the input image and a
       copy of the output image in  memory,  using  12  bytes  per  pixel  for  each.   But  with
       -noantialias, it accesses this memory sequentially in half a dozen passes, with only a few
       pages of memory at a time required in real memory.

       In contrast, without -noantialias, the program's real memory working set size is one  page
       per  input image row plus one page per output image row.  Before Netpbm 10.16 (June 2003),
       -noantialias had the same memory requirement.

OPTIONS

       In addition to the options common to all programs based on libnetpbm (most notably -quiet,
       see
        Common  Options  ⟨index.html#commonoptions⟩ ), pnmrotate recognizes the following command
       line options:

       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 equals signs
       between an option name and its value.

       -background=color
              This determines the color of the background on which the rotated image sits.

              Specify the color (color) as described for the  argument  of  the  pnm_parsecolor()
              library routine ⟨libnetpbm_image.html#colorname⟩ .

              By  default, if you don't specify this option, pnmrotate selects what appears to it
              to be the background color of the original image.  It determines this color  rather
              simplistically,  by  taking  an average of the colors of the two top corners of the
              image.

              This option was new in Netpbm 10.15.  Before that, pnmrotate always behaved  as  is
              the default now.

       -noantialias
              This  option  forces pnmrotate to simply move pixels around instead of synthesizing
              output pixels from multiple input pixels.  The latter could  cause  the  output  to
              contain  colors  that  are  not  in the input, which may not be desirable.  It also
              probably makes the output contain a large number of colors.  If you  need  a  small
              number  of colors, but it doesn't matter if they are the exact ones from the input,
              consider using pnmquant on the output instead of using -noantialias.

              Note that to ensure the output does not contain colors that are not in  the  input,
              you also must consider the background color.  See the -background option.

REFERENCES

       "A  Fast Algorithm for General Raster Rotation" by Alan Paeth, Graphics Interface '86, pp.
       77-81.

SEE ALSO

       pnmshear(1), pamflip(1), pnmquant(1), pnm(1)

AUTHOR

       Copyright (C) 1989, 1991 by Jef Poskanzer.

DOCUMENT SOURCE

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

              http://netpbm.sourceforge.net/doc/pnmrotate.html