pamstack(1) General Commands Manual pamstack(1)NAME
pamstack - stack planes of multiple PAM images into one PAM image
pamstack [-tupletype tupletype] [inputfilespec]
All options may be abbreviated to the shortest unique prefix.
Reads multiple PAM or PNM images as input. Produces a PAM image as output, consisting of all the planes (channels) of the inputs, stacked
in the order specified.
The output is the same dimensions as the inputs, except that the depth is the sum of the depths of the inputs. It has the same maxval.
pamstack fails if the inputs are not all the same width, height, and maxval. The tuple type is a null string unless you specify the -tuple-
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.
One example of using pamstack is that some Netpbm programs accept as input a PAM that represents graphic image with transparency informa-
tion -- tuple type "RGBA". 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(RGBA) input that newer programs require, do something like this:
pamstack -tupletype=RGBA myimage.ppm myalpha.pgm | pamtouil >myimage.uil
OPTIONS -tupletype tupletype
This specified the tuple type name to be recorded in the output. You may use any string up to 255 characters. Some programs recog-
nize some names. If you omit this option, the default tuple type name is null.
SEE ALSO pam(5)AUTHOR
Copyright (C) by Bryan Henderson, San Jose CA 2000.08.05
01 May 2002 pamstack(1)
Check Out this Related Man Page
Libnetpbm manual(3) Library Functions Manual Libnetpbm manual(3)NAME
libnetpbm - general introduction to the netpbm library
libnetpbm is a C programming library for reading, writing, and manipulating Netpbm images. It also contains a few general graphics manipu-
lation tools, but it is not intended to be a graphics tools library. For graphics tools, Netpbm expects you to run the Netpbm programs.
From a C program, the libnetpbm function pm_system() makes this easy. However, since it creates a process and execs a program, this may be
too heavyweight for some applications.
To use libnetpbm services in your C program, #include the pam.h interface header file. For historical reasons, you can also get by in some
cases with pbm.h, pgm.h, ppm.h, or pnm.h, but there's really no point to that anymore.
The libnetpbm functions are divided into these categories:
o PBM functions. These have names that start with pbm and work only on PBM images.
o PGM functions. These have names that start with pgm and work only on PGM images.
o PPM functions. These have names that start with ppm and work only on PPM images.
o PNM functions. These have names that start with pnm and work on PBM, PGM, and PPM images.
o PAM functions. These also have names that start with pnm and work on all the Netpbm image types.
o PM functions. These are utility functions that aren't specific to any particular image format.
For new programming, you rarely need to concern yourself with the PBM, PGM, PPM, and PNM functions, because the newer PAM functions do the
same thing and are easier to use. For certain processing of bi-level images, the PBM functions are significantly more efficient, though.
libnetpbm has a backward compatibility feature that means a function designed to read one format can read some others too, converting on
the fly. In particular, a function that reads a PGM image will also read a PBM image, but converts it as it reads it so that for program-
ming purposes, it is a PGM image. Similarly, a function that reads PPM can read PBM and PGM as well. And a function that reads PBM, PGM,
or PPM can read a PAM that has an equivalent tuple type.
For each of the five classes of libnetpbm image processing functions, libnetpbm has in in-memory representation for a pixel, a row, and a
whole image. Do not confuse this format with the actual image format, as you would see in a file. The libnetpbm in-memory format is
designed to make programming very easy. It is sometimes extremely inefficient, even more than the actual image format. For example, a
pixel that a PPM image represents with 3 bytes, libnetpbm's PAM functions represent with 16 bytes. A pixel in a PBM image is represented
by a single bit, but the PNM functions represent that pixel in memory with 96 bits.
for the basics on using libnetpbm in a program.
You can look up the reference information for a particular function in ThelibnetpbmDirectory(1)
Before Netpbm release 10 (June 2002), this library was split into four: libpbm, libpgm, libppm, and libpnm. That's largely the reason for
the multiple sets of functions and scattered documentation.
netpbm documentation December 2003 Libnetpbm manual(3)