dwww Home | Manual pages | Find package

Pnmrotate User Manual(1)    General Commands Manual    Pnmrotate User Manual(1)

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 contain-
       ing rectangle is as small as possible to contain the rotated image.  The
       background of the containing image is a single color that pnmrotate  de-
       termines  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 ac-
       cesses 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 re-
       quirement.

OPTIONS
       In addition to the options common to all  programs  based  on  libnetpbm
       (most  notably  -quiet,  see ]8;;index.html#commonoptions\ Common Options]8;;\ ), 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  ei-
       ther 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  ]8;;libnetpbm_image.html#colorname\argument of the
              pnm_parsecolor() library routine]8;;\ .

              By  default,  if you don't specify this option, pnmrotate selects
              what appears to it to be the background color of the original im-
              age.  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 al-
              ways 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  in-
              stead 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

netpbm documentation             30 August 2002        Pnmrotate User Manual(1)

Generated by dwww version 1.16 on Tue Dec 16 04:56:53 CET 2025.