pnmrotate



Pnmrotate User Manual(0)                              Pnmrotate User Manual(0)




NAME

       pnmrotate - rotate a PNM image by some angle



SYNOPSIS

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

       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.



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-clock-
       wise.  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 frac-
       tions  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 mem-
       ory, 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

       -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
              ppm_parsecolor() library routine .

              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 simplisticly, by taking
              an average of the colors of the two top corners of the image.

              This option was new in Netpbm  10.l5.   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  pix-
              els.   The  latter could cause the output to contain colors that
              are not in the input, which may not be desirable.  It also prob-
              ably  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.



netpbm documentation            30 August 2002        Pnmrotate User Manual(0)

Man(1) output converted with man2html