summary refs log tree commit diff
path: root/pnmshear.html
blob: cfeaa1491ffc46ee12e21bbe367a0eaa3aeee881 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
<html><head><title>Pnmshear User Manual</title></head>
<body>
<h1>pnmshear</h1>
Updated: 22 March 2020
<br>
<a href="#index">Table Of Contents</a>

<h2>NAME</h2>
pnmshear - shear a PNM image by a specified angle

<h2 id="synopsis">SYNOPSIS</h2>

<b>pnmshear</b>

[<b>-noantialias</b>] [<b>-background=</b><i>color</i>]
<i>angle</i> [<i>pnmfile</i>]

<p>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.

<h2 id="description">DESCRIPTION</h2>

<p>This program is part of <a href="index.html">Netpbm</a>.

<p><b>pnmshear</b> reads a PNM image as input and shears it by the
specified angle and produce a PNM image as output.  If the input file
is in color, the output will be too, otherwise it will be grayscale.
The angle is in degrees (floating point), and measures this:

<pre>
    +-------+  +-------+
    |       |  |\       \
    |  OLD  |  | \  NEW  \
    |       |  |an\       \
    +-------+  |gle+-------+
</pre>

If the angle is negative, it shears the other way:
<pre>
    +-------+  |-an+-------+
    |       |  |gl/       /
    |  OLD  |  |e/  NEW  /
    |       |  |/       /
    +-------+  +-------+
</pre>

The angle should not get too close to 90 or -90, or the resulting image will
be unreasonably wide.  In fact, if it gets too close, the width will be so
large that <b>pnmshear</b> cannot do computations in the word sizes it uses,
and the program detects this and fails.

<p><b>pnmshear</b> does the shearing 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 in
the image are modified and there are typically more of them than you
started with.  If you need to keep precisely the same set of colors,
see the <b>-noantialias</b> option.  If the expanded palette is a
problem, you can run the result through <b>pnmquant</b>.

<h2 id="options">OPTIONS</h2>

<p>In addition to the options common to all programs based on libnetpbm
(most notably <b>-quiet</b>, see <a href="index.html#commonoptions">
Common Options</a>), <b>pnmshear</b> recognizes the following
command line options:

<dl compact>
<dt><b>-background=</b><i>color</i>

<dd>This determines the color of the background on which the sheared image
sits.

<p>Specify the color (<i>color</i>) as described for the <a
href="libnetpbm_image.html#colorname">argument of the <b>pnm_parsecolor()</b>
library routine</a>.

<p>By default, if you don't specify this option, <b>pnmshear</b> 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.

<p>This option was new in Netpbm 10.37 (December 2006).  Before that,
<b>pnmshear</b> always behaved as is the default now.

<dt><b>-noantialias</b>

<dd>This option forces <b>pnmshear</b> 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 <b>pnmquant</b> on the 
output instead of using <b>-noantialias</b>.

<p>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
<b>-background</b> option.

</dl>

<h2 id="seealso">SEE ALSO</h2>

<a href="pnmrotate.html">pnmrotate</a>,
<a href="pamflip.html">pamflip</a>,
<a href="pamhomography.html">pamhomography</a>,
<a href="pnmquant.html">pnmquant</a>,
<a href="pnm.html">pnm</a>


<h2 id="author">AUTHOR</h2>

Copyright (C) 1989, 1991 by Jef Poskanzer.

<hr>
<h2 id="index">Table Of Contents</h2>
<ul>
<li><a href="#synopsis">SYNOPSIS</a>
<li><a href="#description">DESCRIPTION</a>
<li><a href="#options">OPTIONS</a>
<li><a href="#seealso">SEE ALSO</a>
<li><a href="#author">AUTHOR</a>
</ul>
</body>
</html>