pnmrotate
Updated: 30 August 2002
Table Of Contents
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 pre-
fix. 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. 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 (rectan-
gular) 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 mul-
tiple of a
quarter turn. It is faster and more accurate.
For rotations greater than 45 degrees you may get better re-
sults if you
first use pamflip to do a 90 degree rotation and then pnmro-
tate 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 -noan-
tialias 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 argu-
ment 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 origi-
nal 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, pnm-
rotate 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 -noan-
tialias.
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, pamflip, pnmquant, pnm
AUTHOR
Copyright (C) 1989, 1991 by Jef Poskanzer.
_________________________________________________________________
Table Of Contents
* NAME
* SYNOPSIS
* DESCRIPTION
* REFERENCES
* SEE ALSO
* AUTHOR
UNIX/Linux commands referenced on this page:
- file
- pnmfile
- as
- pamflip
- more
- less
- at
- time
- top
- which
- pnmquant
- pnmshear