pnmscalefixed
scale a portable anymap quickly, but less accurate
add an example, a script, a trick and tips
examples
no example yet ...
... Feel free to add your own example above to help other Linux-lovers !
description
pnmscalefixed
is the same thing as pnmscale except that it uses
fixed point arithmetic internally instead of floating point,
which makes it run faster. In turn, it is less accurate and
may distort the image.
Use the
pnmscale man page with pnmscalefixed. This man
page only describes the difference.
pnmscalefixed
uses fixed point 12 bit arithmetic. By contrast,
pnmscale uses floating point arithmetic which on most
machines is probably 24 bit precision. This makes
pnmscalefixed run faster (30% faster in one
experiment), but the imprecision can cause distortions at
the right and bottom edges.
The distortion
takes the following form: One pixel from the edge of the
input is rendered larger in the output than the scaling
factor requires. Consequently, the rest of the image is
smaller than the scaling factor requires, because the
overall dimensions of the image are always as requested.
This distortion will usually be very hard to see.
pnmscalefixed
with the -verbose option tells you how much
distortion there is.
The amount of
distortion depends on the size of the input image and how
close the scaling factor is to an integral 1/4096th.
If the scaling
factor is an exact multiple of 1/4096, there is no
distortion. So, for example doubling or halving an image
causes no distortion. But reducing it or enlarging it by a
third would cause some distortion. To consider an extreme
case, scaling a 100,000 row image down to 50,022 rows would
create an output image with all of the input squeezed into
the top 50,000 rows, and the last row of the input copied
into the bottom 22 rows of output.
pnmscalefixed
could probably be modified to use 16 bit or better
arithmetic without losing anything. The modification would
consist of a single constant in the source code. Until there
is a demonstrated need for that, though, the Netpbm
maintainer wants to keep the safety cushion afforded by the
original 12 bit precision.
pnmscalefixed
does not have pnmscale ’s -nomix option.