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.