pamcomp
Updated: 17 July 2004
Table Of Contents
NAME
pamcomp - composite (overlay) two Netpbm images together
SYNOPSIS
pamcomp [-align={left|center|right| beyondleft|beyondright}]
[-valign={top|middle|bottom| above|below}]
[-xoff=X] [-yoff=Y]
[-alpha=alpha-pgmfile] [-invert] [-opacity=opacity] [-linear]
overlay_file [underlying_file [output_file]]
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.
DESCRIPTION
This program is part of Netpbm. pamcomp reads two images and
produces a
composite image with one of the images overlayed on top of
the other,
possible translucently. The images need not be the same size.
The input and
outputs are Netpbm format image files.
In its simplest use, pamcomp simply places the image in
the file
overlay_file on top of the image in the file underlying_file,
blocking out
the part of underlying_file beneath it.
If you add the -alpha option, then pamcomp uses the image
in file
alpha-pgmfile as an alpha mask, which means it determines the
level of
transparency of each point in the overlay image. The alpha
mask must have
the same dimensions as the overlay image. In places where the
alpha mask
defines the overlay image to be opaque, the composite output
contains only
the contents of the overlay image; the underlying image is to-
tally blocked
out. In places where the alpha mask defines the overlay im-
age to be
transparent, the composite output contains none of the overlay
image; the
underlying image shows through completely. In places where the
alpha mask
shows a value in between opaque and transparent (translu-
cence), the
composite image contains a mixture of the overlay image and
the underlying
image and the level of translucence determines how much of
each.
The alpha mask is a PGM file in which a white pixel represents
opaqueness
and a black pixel transparency. Anything in between is
translucent. (Like
any Netpbm program, pamcomp will see a PBM file as if it is
PGM).
In some image file formats (PNG, for example), transparency
information (the
alpha mask) is part of the definition of the image. In the
Netpbm formats,
transparency is usually embodied in a separate companion file.
The Netpbm
converter programs that convert from an image format such as
PNG have
options that allow you to extract the transparency information
to a separate
file, which you can then use as input to pamcomp.
Sometimes, though, people use a version of the PAM format that
has an alpha
channel built in. But pamcomp doesn't know how to use those.
It processes
the images just fine, but ignores the built-in alpha channel.
The output image is always of the same dimensions as the un-
derlying image.
pamcomp uses only parts of the overlay image that fit within
the underlying
image.
To specify where on the underlying image to place the overlay
image, use the
-align, -valign, -xoff, and -yoff options. Without these op-
tions, the
default horizontal position is flush left and the default ver-
tical position
is flush top.
The overlay image, in the position you specify, need not fit
entirely within
the underlying image. pamcomp uses only the parts of the over-
lay image that
appear above the underlying image. It is possible to specify
positioning
such that none of the overlay image is over the underlying im-
age -- i.e. the
overlay is out of frame. If you do that, pamcomp issues a
warning.
The overlay and underlying images may be of different for-
mats (e.g.
overlaying a PBM text image over a full color PPM image) and
have different
maxvals. The output image has the more general of the two in-
put formats and
a maxval that is the least common multiple the two maxvals (or
the maximum
maxval allowable by the format, if the LCM is more than that).
OPTIONS
-align=alignment
This option selects the basic horizontal position of
the overlay
image with respect to the underlying image, in syntax
reminiscent of
HTML. left means flush left, center means centered, and
right means
flush right.
The -xoff option modifies this position. beyondleft
means just out of
frame to the left -- the right edge of the overlay is
flush with the
left edge of the underlying image. beyondright means
just out of
frame to the right. These alignments are useful only if
you add a
-xoff option. These two values were added in Netpbm
10.10 (October
2002).
The default is left.
-valign=alignment
This option selects the basic vertical position of the
overlay image
with respect to the underlying image, in syntax remi-
niscent of HTML.
top means flush top, middle means centered, and bottom
means flush
bottom.
The -yoff option modifies this position. above means
just out of
frame to the top -- the bottom edge of the overlay is
flush with the
top edge of the underlying image. below means just out
of frame to
the bottom. These alignments are useful only if you add
a -yoff
option. These two values were added in Netpbm 10.10
(October 2002).
The default is top.
-xoff=x
This option modifies the horizontal positioning of the
overlay image
with respect to the underlying image as selected by
the -align
option. pamcomp shifts the overlay image from that ba-
sic position x
pixels to the right. x can be negative to indicate
shifting to the
left.
The overlay need not fit entirely (or at all) on the
underlying
image. pamcomp uses only the parts that lie over the
underlying
image.
Before Netpbm 10.10 (October 2002), -xoff was mutually
exclusive with
-align and always measured from the left edge.
-yoff=y
This option modifies the vertical positioning of the
overlay image
with respect to the underlying image as selected by the
-valign
option. pamcomp shifts the overlay image from that ba-
sic position y
pixels downward. y can be negative to indicate shifting
upward.
The overlay need not fit entirely (or at all) on the
underlying
image. pamcomp uses only the parts that lie over the
underlying
image.
Before Netpbm 10.10 (October 2002), -xoff was mutually
exclusive with
-valign and always measured from the top edge.
-alpha=alpha-pgmfile
This option names a file that contains the alpha mask.
If you don't
specify this option, there is no alpha mask, which is
equivalent to
having an alpha mask specify total opaqueness every-
where.
You can specify - as the value of this option and the
alpha mask will
come from Standard Input. If you do this, don't specify
Standard
Input as the source of any other input image.
-invert
This option inverts the sense of the values in the al-
pha mask, which
effectively switches the roles of the overlay image
and the
underlying image in places where the two intersect.
-opacity=opacity
This option tells how opaque the overlay image is to
be, i.e. how
much of the composite image should be from the overlay
image, as
opposed to the underlying image. opacity is a floating
point number,
with 1.0 meaning the overlay image is totally opaque
and 0.0 meaning
it is totally transparent. The default is 1.0.
If you specify an alpha mask (the -alpha option), pam-
comp uses the
product of the opacity indicated by the alpha mask (as
modified by
the -invert option, as a fraction, and this opacity
value. The
-invert option does not apply to this opacity value.
As a simple opacity value, the value makes sense only
if it is
between 0 and 1, inclusive. However, pamcomp accepts
all values and
performs the same arithmetic computation using whatever
value you
provide. An opacity value less than zero means the un-
derlay image is
intensified and then the overlay image is "subtracted"
from it. An
opacity value greater than unity means the overlay
image is
intensified and the underlaying image subtracted from
it. In either
case, pamcomp clips the resulting color component in-
tensities so they
are nonnegative and don't exceed the output image's
maxval.
This may seem like a strange thing to do, but it has
uses. You can
use it to brighten or darken or saturate or desaturate
areas of the
underlaying image. See this description of the tech-
nique.
This option was added in Netpbm 10.6 (July 2002). Be-
fore Netpbm 10.15
(April 2003), values less than zero or greater than
unity were not
allowed.
-linear
This option indicates that the inputs are not true
Netpbm images but
rather a non-gamma-adjusted variation. This is relevant
only when you
mix pixels, using the -opacity option or an alpha mask
(the -alpha
option).
The alpha mask and -opacity values indicate a fraction
of the light
intensity of a pixel. But the PNM and PNM-equivalent
PAM image
formats represent intensities with gamma-adjusted num-
bers that are
not linearly proportional to intensity. So pamcomp, by
default,
performs a calculation on each sample read from its in-
put and each
sample written to its output to convert between these
gamma-adjusted
numbers and internal intensity-proportional numbers.
Sometimes you are not working with true PNM or PAM im-
ages, but rather
a variation in which the sample values are in fact
directly
proportional to intensity. If so, use the -linear op-
tion to tell
pamcomp this. pamcomp then will skip the conversions.
The conversion takes time. 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 -linear even when you
have true PPM
input and expect true PPM output.
For the first 13 years of Netpbm's life, until Netpbm
10.20 (January
2004), pamcomp's predecessor pnmcomp always treated the
PPM samples
as intensity-proportional even though they were not,
and drew few
complaints. So using -linear as a lie is a reasonable
thing to do if
speed is important to you.
Another technique to consider is to convert your PNM
image to the
linear variation with pnmgamma, run pamcomp on it
and other
transformations that like linear PNM, and then convert
it back to
true PNM with pnmgamma -ungamma. pnmgamma is often
faster than
pamcomp in doing the conversion.
SEE ALSO
ppmmix and pnmpaste are simpler, less general versions of the
same tool.
ppmcolormask and pbmmask can help with generating an alpha
mask.
pnmcomp is an older program that runs faster, but has less
function.
pnm
HISTORY
pamcomp was new in Netpbm 10.21 (March 2004). Its predecessor,
pnmcomp, was
one of the first programs added to Netpbm when the project
went global in
1993.
AUTHOR
Copyright (C) 1992 by David Koblas (koblas@mips.com).
_________________________________________________________________
Table Of Contents
* NAME
* SYNOPSIS
* DESCRIPTION
* OPTIONS
* SEE ALSO
* HISTORY
* AUTHOR
UNIX/Linux commands referenced on this page:
- composite
- top
- as
- which
- file
- convert
- more
- at
- less
- true
- time
- pnmcomp
- pnmgamma
- ppmmix
- pnmpaste
- ppmcolormask
- pbmmask