# pamstack

Updated: 18 May 2023
Table Of Contents

## NAME

pamstack - stack planes of multiple PAM images into one PAM image

## SYNOPSIS

pamstack [-tupletype tupletype] [-firstmaxval,-lcmmaxval] [inputfilespec ...]

All options may be abbreviated to the shortest unique prefix. You may use two hyphens instead of one. You may separate an option from its value with a space instead of =.

## DESCRIPTION

This program is part of Netpbm.

pamstack reads multiple PAM or PNM images as input and produces a PAM image as output, consisting of all the planes (channels) of the inputs, stacked in the order specified.

It can also just change the tuple type of a single PAM image.

For any one (but not more) of the input files, you may specify "-" to mean Standard Input. If you specify no arguments at all, the input is one file: Standard Input.

The output is the same dimensions as the inputs, except that the depth is the sum of the depths of the inputs. The maxval is the same as the inputs if they are all alike, and controlled by -firstmaxval and -lcmmaxval if not. The tuple type is a null string unless you specify the -tupletype option.

pamstack fails if the inputs are not all the same width and height. It also fails if they do not all have the same maxval, unless you specify -firstmaxval or -lcmmaxval.

pamstack works with multi-image streams. It stacks the 1st image in all the streams into one output image (the first one in the output stream), then stacks the 2nd image in all the streams into the 2nd image in the output stream, and so on, until one of the streams runs dry. It's like a matrix operation.

Before Netpbm 10.32 (February 2006), pamstack ignored all but the first image in each input stream.

pamchannel does the opposite of pamstack: It extracts individual planes from a single PAM.

Use pamtopnm to convert a suitable PAM image to a more traditional PNM (PBM, PGM, or PPM) image. (But there's no need to do that if you're going to feed it to a modern Netpbm program -- they all take suitable PAM input directly).

One example of using pamstack is that some Netpbm programs accept as input a PAM that represents graphic image with transparency information. Taking a color image for example, this would be a PAM with tuple type "RGB_ALPHA". In Netpbm, such images were traditionally represented as two images - a PPM for the color and a PGM for the transparency. To convert a PPM/PGM pair into PAM(RGB_ALPHA) input that newer programs require, do something like this:

    $ pamstack -tupletype=RGB_ALPHA myimage.ppm myalpha.pgm | \
          pamtouil >myimage.uil

## OPTIONS

In addition to the options common to all programs based on libnetpbm (most notably -quiet, see Common Options), pamstack recognizes the following command line option:

-tupletype tupletype
  This specifies the tuple type name to be recorded in the output. You may use any string up to 255 characters. Some programs recognize some names. If you omit this option, the default tuple type name is null.
-firstmaxval
  This says to make the maxval of the output the same as the maxval of the first image of the input; the program scales sample values of other images are as necessary.

  By default, pamstack requires all the input images to have the same maxval. If they don't, it fails.

  You cannot specify this with -lcmmaxval.

  This option was new in Netpbm 11.03 (June 2023).

-lcmmaxval
  This says to make the maxval of the output the least common multiple of the maxvals of the input images, limited to 65535 if the LCM is above that; the program scales sample values of other images are as necessary.

  By default, pamstack requires all the input images to have the same maxval. If they don't, it fails.

  You cannot specify this with -firstmaxval.

  This option was new in Netpbm 11.03 (June 2023).

## SEE ALSO

pam pamchannel

## HISTORY

pamstack was new in Netpbm 10.0 (June 2002).

## Table Of Contents

- SYNOPSIS
- DESCRIPTION
- OPTIONS
- SEE ALSO
- HISTORY