Minimum unique abbreviation of option is acceptable. You may use double hypens 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.
In its simplest use, pnmcomp 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 pnmcomp 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 totally blocked out. In places where the alpha mask defines the overlay image 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 (translucence), 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, pnmcomp 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 PNM formats, transparency is always embodied in a separate companion file. The PNM 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 pnmcomp.
The output image is always of the same dimensions as the underlying image. pnmcomp 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 options, the default horizontal position is flush left and the default vertical position is flush top.
The overlay image, in the position you specify, need not fit entirely within the underlying image. pnmcomp uses only the parts of the overlay image that appear above the underlying image. It is possible to specify positioning such that none of the overlay image is over the underlying image -- i.e. the overlay is out of frame. If you do that, pnmcomp issues a warning.
The overlay and underlying images may be of different formats (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 input 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).
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.
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.
The overlay need not fit entirely (or at all) on the underlying image. pnmcomp 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.
The overlay need not fit entirely (or at all) on the underlying image. pnmcomp 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.
If you specify an alpha mask (the -alpha option), pnmcomp 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, pnmcomp accepts all values and performs the same arithmetic computation using whatever value you provide. An opacity value less than zero means the underlay 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, pnmcomp clips the resulting color component intensities 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 technique.
This option was added in Netpbm 10.6 (July 2002). Before Netpbm 10.15 (April 2003), values less than zero or greater than unity were not allowed.