pnmscale - scale a PNM file quickly
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 pnmfixed. This man page
only describes the difference.
pnmscalefixed uses fixed point 12 bit arithmetic. By con
trast, 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 halv
ing 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 modifica
tion 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.
Man(1) output converted with
man2html