summaryrefslogtreecommitdiffstats
path: root/upstream/debian-bookworm/man1/netpbm.1
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/debian-bookworm/man1/netpbm.1')
-rw-r--r--upstream/debian-bookworm/man1/netpbm.11421
1 files changed, 1421 insertions, 0 deletions
diff --git a/upstream/debian-bookworm/man1/netpbm.1 b/upstream/debian-bookworm/man1/netpbm.1
new file mode 100644
index 00000000..d8b9636d
--- /dev/null
+++ b/upstream/debian-bookworm/man1/netpbm.1
@@ -0,0 +1,1421 @@
+\
+.\" This man page was generated by the Netpbm tool 'makeman' from HTML source.
+.\" Do not hand-hack it! If you have bug fixes or improvements, please find
+.\" the corresponding HTML page on the Netpbm website, generate a patch
+.\" against that, and send it to the Netpbm maintainer.
+.TH "User manual for Netpbm" 1 "08 August 2020" "netpbm documentation"
+
+.SH NAME
+netpbm - netpbm library overview
+
+.UN overview
+.SH Overview Of Netpbm
+.UN overview
+.PP
+\fBNetpbm\fP is a package of graphics programs and a programming
+library.
+.PP
+ There are over 330 separate programs in the package, most of
+which have "pbm", "pgm", "ppm", "pam", or "pnm" in their names. For example,
+.BR "pamscale" (1)\c
+\& and
+.BR "giftopnm" (1)\c
+\&.
+.PP
+For example, you might use \fBpamscale\fP to shrink an image by
+10%. Or use \fBpamcomp\fP to overlay one image on top of another.
+Or use \fBpbmtext\fP to create an image of text. Or reduce the number
+of colors in an image with \fBpnmquant\fP.
+.PP
+\fBNetpbm\fP is an open source software package, distributed via
+the
+.UR http://sourceforge.net/projects/netpbm
+Sourceforge \fBnetpbm\fP project
+.UE
+\&.
+
+.UN index
+.SH Table Of Contents
+
+.IP \(bu
+
+.UR #overview
+Overview Of Netpbm
+.UE
+\&
+.IP \(bu
+
+.UR #formats
+The Netpbm Formats
+.UE
+\&
+
+.IP \(bu
+
+.UR #impconv
+Implied Format Conversion
+.UE
+\&
+.IP \(bu
+
+.UR #transparency
+Netpbm and Transparency
+.UE
+\&
+
+.IP \(bu
+
+.UR #programs
+The Netpbm Programs
+.UE
+\&
+
+.IP \(bu
+
+.UR #commonoptions
+Common Options
+.UE
+\&
+.IP \(bu
+
+.UR #directory
+Directory
+.UE
+\&
+.IP \(bu
+
+.UR #prognotes
+How To Use The Programs
+.UE
+\&
+
+.IP \(bu
+
+.UR #libnetpbm
+The Netpbm Library
+.UE
+\&
+.IP \(bu
+
+.UR #config
+netpbm-config
+.UE
+\&
+.IP \(bu
+
+.UR #memoryusage
+Memory Usage
+.UE
+\&
+.IP \(bu
+
+.UR #cpuusage
+CPU Usage
+.UE
+\&
+.IP \(bu
+
+.UR #netpbmforgimp
+Netpbm For Gimp
+.UE
+\&
+.IP \(bu
+
+.UR #companion
+Companion Software
+.UE
+\&
+
+.IP \(bu
+
+.UR #phpnetpbm
+PHP-NetPBM
+.UE
+\&
+
+.IP \(bu
+
+.UR #othersoftware
+Other Graphics Software
+.UE
+\&
+
+.IP \(bu
+
+.UR #viewers
+Image Viewers
+.UE
+\&
+.IP \(bu
+
+.UR #capturers
+Image Capturers
+.UE
+\&
+.IP \(bu
+
+.UR #visual
+Visual Graphics Software
+.UE
+\&
+.IP \(bu
+
+.UR #programmingtools
+Programming Tools
+.UE
+\&
+.IP \(bu
+
+.UR #toolsforformats
+Tools For Specific Graphics Formats
+.UE
+\&
+.IP \(bu
+
+.UR #document
+Document/Graphics Software
+.UE
+\&
+.IP \(bu
+
+.UR #otherothersoftware
+Other
+.UE
+\&
+
+.IP \(bu
+
+.UR #otherfmt
+Other Graphics Formats
+.UE
+\&
+.IP \(bu
+
+.UR #history
+History
+.UE
+\&
+.IP \(bu
+
+.UR #author
+Author
+.UE
+\&
+
+
+.UN programs
+.SH The Netpbm Programs
+.PP
+The Netpbm programs are generally useful run by a person from a
+command shell, but are also designed to be used by programs. A common
+characteristic of Netpbm programs is that they are simple, fundamental
+building blocks. They are most powerful when stacked in pipelines.
+Netpbm programs do not use graphical user interfaces and do not seek
+input from a user. The only programs that display graphics at all are
+the very primitive display programs \fBpamx\fP and \fBppmsvgalib\fP,
+and they don't do anything but that.
+.PP
+Each of these programs has its own manual, as linked in the
+directory below.
+.PP
+The Netpbm programs can read and write files greater than 2 GiB wherever
+the underlying system can. There may be exceptions where the programs use
+external libraries (The JPEG library, etc.) to access files and the external
+library does not have large file capability. Before Netpbm 10.15 (April
+2003), no Netpbm program could read a file that large.
+
+.UN commonoptions
+.SS Common Options
+.PP
+There are a few options that are present on all programs that are based
+on the Netpbm library, including virtually all Netpbm programs. These
+are not mentioned in the individual manuals for the programs.
+.PP
+You can use two hyphens instead of one on these options if you like.
+
+
+
+.TP
+\fB-quiet\fP
+ Suppress all informational messages that would otherwise be
+issued to Standard Error. (To be precise, this only works to the
+extent that the program in question implements the Netpbm convention
+of issuing all informational messages via the \fBpm_message()\fP
+service of the Netpbm library).
+
+.TP
+\fB-version\fP
+Instead of doing anything else, report the version of the
+\fBlibnetpbm\fP library linked with the program (it may have been
+linked statically into the program, or dynamically linked at run
+time). Normally, the Netpbm programs and the library are installed
+at the same time, so this tells you the version of the program and all
+the other Netpbm files it uses as well.
+
+.TP
+\fB-plain\fP
+If the program generates an image in PNM format, generate it in the
+"plain" (aka "ascii") version of the format, as opposed to the "raw" (aka
+"binary") version.
+.sp
+Note that the other Netpbm format, PAM, does not have plain and raw
+versions, so this option has no effect on a program that generates PAM output.
+.sp
+This option was introduced in Netpbm 10.10 (October 2002). From Netpbm 10.32
+(February 2006) through Netpbm 10.62 (March 2013), the option is invalid with
+a program that generates PAM output (instead of ignoring the option, the
+program fails).
+
+
+
+.UN directory
+.SS Directory
+.PP
+Here is a complete list of all the Netpbm programs (with links to
+their manuals):
+.PP
+.BR "Netpbm program directory" (1)\c
+\&
+
+
+.UN prognotes
+.SS How To Use The Programs
+.PP
+As a collection of primitive tools, the power of Netpbm is multiplied
+by the power of all the other unix tools you can use with them. These
+notes remind you of some of the more useful ways to do this. Often,
+when people want to add high level functions to the Netpbm tools, they
+have overlooked some existing tool that, in combination with Netpbm,
+already does it.
+.PP
+Often, you need to apply some conversion or edit to a whole bunch of files.
+.PP
+As a rule, Netpbm programs take one input file and produce one output file,
+usually on Standard Output. This is for flexibility, since you so often
+have to pipeline many tools together.
+.PP
+Here is an example of a shell command to convert all your of PNG files
+(named *.png) to JPEG files named *.jpg:
+.nf
+for i in *.png; do pngtopam $i | ppmtojpeg >`basename $i .png`.jpg; done
+
+.fi
+.PP
+Or you might just generate a stream of individual shell commands, one
+per file, with awk or perl. Here's how to brighten 30 YUV images that
+make up one second of a movie, keeping the images in the same files:
+
+.nf
+ls *.yuv
+ | perl -ne 'chomp;
+ print yuvtoppm $_ | pambrighten -value +100 | ppmtoyuv >tmp$$.yuv;
+ mv tmp$$.yuv $_
+ '
+ | sh
+
+.fi
+.PP
+The tools \fBfind\fP (with the \fB-exec\fP option) and
+\fBxargs\fP are also useful for simple manipulation of groups of files.
+.PP
+Some shells' "process substitution" facility can help where a
+non-Netpbm program expects you to identify a disk file for input and
+you want it to use the result of a Netpbm manipulation. Say
+the hypothetical program \fBprintcmyk\fP
+takes the filename of a Tiff CMYK file as input and what you have is a
+PNG file
+\fBabc.png\fP.
+
+Try:
+.nf
+printcmyk <({ pngtopam abc.png | pnmtotiffcmyk ; })
+
+.fi
+.PP
+It works in the other direction too, if you have a program that
+makes you name its output file and you want the output to go through a
+Netpbm tool.
+
+
+.UN formats
+.SH The Netpbm Formats
+.PP
+All of the programs work with a set of graphics formats called the
+"netpbm" formats. Specifically, these formats are
+.BR "pbm" (1)\c
+\&,
+.BR "pgm" (1)\c
+\&,
+.BR "ppm" (1)\c
+\&,
+and
+.BR "pam" (1)\c
+\&.
+
+The first three of these are sometimes known generically as
+"pnm".
+
+Many of the Netpbm programs convert from a Netpbm format to another
+format or vice versa. This is so you can use the Netpbm programs to
+work on graphics of any format. It is also common to use a
+combination of Netpbm programs to convert from one non-Netpbm format
+to another non-Netpbm format. Netpbm has converters for about 100
+graphics formats, and as a package Netpbm lets you do more graphics
+format conversions than any other computer graphics facility.
+.PP
+The Netpbm formats are all raster formats, i.e. they describe an image
+as a matrix of rows and columns of pixels. In the PBM format, the
+pixels are black and white. In the PGM format, pixels are shades of
+gray. In the PPM format, the pixels are in full color. The PAM format
+is more sophisticated. A replacement for all three of the other formats,
+it can represent matrices of general data including but not limited to
+black and white, grayscale, and color images.
+.PP
+Programs designed to work with PBM images have "pbm" in their names.
+Programs designed to work with PGM, PPM, and PAM images similarly have
+"pgm", "ppm", and "pam" in their names.
+.PP
+All Netpbm programs designed to read PGM images see PBM images as if
+they were PGM too. All Netpbm programs designed to read PPM images
+see PGM and PBM images as if they were PPM. See
+.UR #impconv
+ Implied Format Conversion
+.UE
+\&.
+.PP
+ Programs that have "pnm" in their names read PBM, PGM,
+and PPM but unlike "ppm" programs, they distinguish between
+those formats and their function depends on the format. For example,
+.BR "pnmtopng" (1)\c
+\& creates a black and white PNG
+output image if its input is PBM or PGM, but a color PNG output image
+if its input is PPM. And \fBpnmrotate\fP produces an output image of
+the same format as the input. A hypothetical \fBppmrotate\fP program
+would also read all three PNM input formats, but would see them all as
+PPM and would always generate PPM output.
+.PP
+Programs that have "pam" in their names read all the Netpbm
+formats: PBM, PGM, PPM, and PAM. They sometimes treat them all as if
+they are PAM, using an implied conversion, but often they recognize
+the individual formats and behave accordingly, like a "pnm" program
+does. See
+.UR #impconv
+Implied Format Conversion
+.UE
+\&.
+.PP
+Finally, there are subformats of PAM that are equivalent to PBM,
+PGM, and PPM respectively, and Netpbm programs designed to read
+PBM, PGM, and/or PPM see those PAM images as if they were the former.
+For example, \fBppmhist\fP can analyze a PAM image of tuple type
+RGB (i.e. a color image) as if it were PPM.
+.PP
+ If it seems wasteful to you to have three separate PNM formats, be
+aware that there is a historical reason for it. In the beginning,
+there were only PBMs. PGMs came later, and then PPMs. Much later
+came PAM, which realizes the possibility of having just one aggregate
+format.
+.PP
+The formats are described in the specifications of
+.BR "pbm" (1)\c
+\&,
+.BR "pgm" (1)\c
+\&,
+.BR "ppm" (1)\c
+\&,
+and
+.BR "pam" (1)\c
+\&.
+
+.UN impconv
+.SS Implied Format Conversion
+.PP
+A program that uses the PGM library subroutines to read an image
+can read a PBM image as well as a PGM image. The program sees the PBM
+image as if it were the equivalent PGM image, with a maxval of 255.
+\fBnote:\fP This sometimes confuses people who are looking
+at the formats at a lower layer than they ought to be because a zero
+value in a PBM raster means white, while a zero value in a PGM raster
+means black.
+.PP
+A program that uses the PPM library subroutines to read an image
+can read a PGM image as well as a PPM image and a PBM image as well as
+a PGM image. The program sees the PBM or PGM image as if it were the
+equivalent PPM image, with a maxval of 255 in the PBM case and the
+same maxval as the PGM in the PGM case.
+.PP
+A program that uses the PAM library subroutines to read an image
+can read a PBM, PGM, or PPM image as well as a PAM image. The program
+sees a PBM image as if it were the equivalent PAM image with tuple
+type \fBBLACKANDWHITE\fP. It sees a PGM image as if it were the
+equivalent PAM image with tuple type \fBGRAYSCALE\fP. It sees a PPM
+image as if it were the equivalent PAM image with tuple type
+\fBRGB\fP. But the program actually can see deeper if it wants to.
+It can tell exactly which format the input was and may respond
+accordingly. For example, a PAM program typically produces output in
+the same format as its input.
+.PP
+A program that uses the PGM library subroutines to read an image
+can read a PAM image as well a PGM image, if the PAM is a grayscale or
+black and white visual image. That canonically means the PAM has a
+depth of 1 and a tuple type of GRAYSCALE or BLACKANDWHITE, but
+most Netpbm programs are fairly liberal and will take any PAM at all,
+ignoring all but the first plane.
+.PP
+There is a similar implied conversion for PPM library subroutines
+reading PAM. There is nothing similar for PBM, so if you need for a
+PBM program to read a PAM image, run it through \fBpamtopnm\fP.
+
+
+.UN transparency
+.SS Netpbm and Transparency
+.PP
+In many graphics formats, there's a means of indicating that certain
+parts of the image are wholly or partially transparent, meaning that
+if it were displayed "over" another image, the other image
+would show through there. Netpbm formats deliberately omit that
+capability, since their purpose is to be extremely simple.
+.PP
+In Netpbm, you handle transparency via a transparency mask in a
+separate (slightly redefined) PGM image. In this pseudo-PGM, what
+would normally be a pixel's intensity is instead an opaqueness value.
+See
+.BR "pgm" (1)\c
+\&.
+.BR "pamcomp" (1)\c
+\& is an example of a program that uses
+a PGM transparency mask.
+.PP
+Another means of representing transparency information has recently
+developed in Netpbm, using PAM images. In spite of the argument given
+above that Netpbm formats should be too simple to have transparency
+information built in, it turns out to be extremely inconvenient to
+have to carry the transparency information around separately. This is
+primarily because Unix shells don't provide easy ways to have networks
+of pipelines. You get one input and one output from each program in a
+pipeline. So you'd like to have both the color information and the
+transparency information for an image in the same pipe at the same
+time.
+.PP
+For that reason, some new (and recently renovated) Netpbm programs
+recognize and generate a PAM image with tuple type RGB_ALPHA or
+GRAYSCALE_ALPHA, which contains a plane for the transparency
+information. See
+.BR "the PAM specification" (1)\c
+\&.
+
+
+
+
+.UN libnetpbm
+.SH The Netpbm Library
+.PP
+The Netpbm programming library,
+.BR "libnetpbm" (1)\c
+\&, makes it easy to write programs
+that manipulate graphic images. Its main function is to read and
+write files in the Netpbm formats, and because the Netpbm package
+contains converters for all the popular graphics formats, if your
+program reads and writes the Netpbm formats, you can use it with any
+formats.
+.PP
+But the library also contain some utility functions, such as character
+drawing and RGB/YCrCb conversion.
+.PP
+The library has the conventional C linkage. Virtually all programs
+in the Netpbm package are based on the Netpbm library.
+
+
+.UN config
+.SH netpbm-config
+.PP
+In a standard installation of Netpbm, there is a program named
+\fBnetpbm-config\fP in the regular program search path. We don't
+consider this a Netpbm program -- it's just an ancillary part of a
+Netpbm installation. This program tells you information about the
+Netpbm installation, and is intended to be run by other programs that
+interface with Netpbm. In fact, \fBnetpbm-config\fP is really a
+configuration file, like those you typically see in the \fI/etc/\fP
+directory of a Unix system.
+.PP
+Example:
+.nf
+ $netpbm-config --datadir
+ /usr/local/netpbm/data
+
+.fi
+
+If you write a program that needs to access a Netpbm data file, it can
+use such a shell command to find out where the Netpbm data files are.
+.PP
+\fBnetpbm-config\fP is the only file that must be installed in
+a standard directory (it must be in a directory that is in the default
+program search path). You can use \fBnetpbm-config\fP as a bootstrap
+to find all the other Netpbm files.
+.PP
+There is no detailed documentation of \fBnetpbm-config\fP. If you're
+in a position to use it, you should have no trouble reading the file
+itself to figure out how to use it.
+
+.UN memoryusage
+.SH Memory Usage
+.PP
+An important characteristic that varies among graphics software is
+how much memory it uses, and how. Does it read an entire image into
+memory, work on it there, then write it out all at once? Does it read one
+and write one pixel at a time? In Netpbm, it differs from one program
+to the next, but there are some generalizations we can make.
+.PP
+Most Netpbm programs keep one row of pixels at a time in memory.
+Such a program reads a row from an input file, processes it, then
+writes a row to an output file. Some programs execute algorithms that
+can't work like that, so they keep a small window of rows in memory.
+Others must keep the entire image in memory. If you think of what job
+the program does, you can probably guess which one it does.
+.PP
+When Netpbm keeps a pixel in memory, it normally uses a lot more
+space for it than it occupies in the Netpbm image file format.
+.PP
+The older programs (most of Netpbm) use 12 bytes per pixel. This
+is true even for a PBM image, for which it only really takes one bit
+to totally describe the pixel. Netpbm does this expansion to make
+implementing the programs easier -- it uses the same format regardless
+of the type of image.
+.PP
+Newer programs use the "pam" family of library functions
+internally, which use memory a little differently. These functions are
+designed to handle generic tuples with a variable numbers of planes, so no
+fixed size per-tuple storage is possible. A program of this type uses 4 bytes
+per sample (a tuple is composed of samples), plus a pointer (4-8 bytes) per
+tuple. In a graphic image, a tuple is a pixel. So an ordinary color image
+takes 16-20 bytes per pixel.
+.PP
+When considering memory usage, it is important to remember that
+memory and disk storage are equivalent in two ways:
+
+
+.IP \(bu
+Memory is often virtual, backed by swap space on disk storage. So
+accessing memory may mean doing disk I/O.
+
+.IP \(bu
+Files are usually cached and buffered, so that accessing a disk file
+may just mean accessing memory.
+
+.PP
+This means that the consequences of whether a program works from
+the image file or from a memory copy are not straightforward.
+.PP
+Note that an image takes a lot less space in a Netpbm format file,
+and therefore in an operating system's file cache, than in Netpbm's
+in-memory format. In non-Netpbm image formats, the data is even
+smaller. So reading through an input file multiple times instead of
+keeping a copy in regular memory can be the best use of memory, and many
+Netpbm programs do that. But some files can't be read multiple times.
+In particular, you can't rewind and re-read a pipe, and a pipe is
+often the input for a Netpbm program. Netpbm programs that re-read
+files detect such input files and read them into a temporary file,
+then read that temporary file multiple times.
+.PP
+A few Netpbm programs use an in-memory format that is just one bit
+per pixel. These are programs that convert between PBM and a format that
+has a raster format very much like PBM's. In this case, it would actually
+make the program more complicated (in addition to much slower) to use
+Netpbm's generic 12 byte or 8 byte pixel representation.
+.PP
+By the way, the old axiom that memory is way faster than disk is not
+necessarily true. On small systems, it typically is true, but on a
+system with a large network of disks, especially with striping, it is
+quite easy for the disk storage to be capable of supplying data faster
+than the CPU can use it.
+
+.UN cpuusage
+.SH CPU Usage
+.PP
+People sometimes wonder what CPU facilities Netpbm programs and the
+Netpbm programming library use. The programs never depend on particular
+features existing (assuming they're compiled properly), but the speed
+and cost of running a program varies depending upon the CPU features.
+.PP
+Note that when you download a binary that someone else compiled, even
+though it appears to be compiled properly for your machine, it may be compiled
+improperly for that machine if it is old, because the person who compiled it
+may have chosen to exploit features of newer CPUs in the line. For example,
+an x86 program may be compiled to use instructions that are present on an
+80486, but not on an 80386. You would probably not know this until you run
+the program and it crashes.
+.PP
+But the default build options almost always build binaries that are as
+backward compatible with old CPUs as possible. An exception is a build for a
+64 bit x86 CPU. While the builder could build a program that runs on a 32 bit
+x86, it does not do so by default. A default build builds a program will not
+run on an older 32-bit-only x86 CPU.
+.PP
+One common build option is to use MMX/SSE operands with x86 CPUs.
+Those are not available on older x86 CPUs. The builder by default does not
+generate code that uses MMX/SSE when building for 32 bit x86 CPUs, but
+does when building for 64 bit x86.
+.PP
+One area of particular importance is floating point arithmetic.
+The Netpbm image formats are based on integers, and Netpbm arithmetic
+is done with integers where possible. But there is one significant
+area that is floating point: programs that must deal with light
+intensity. The Netpbm formats use integers that are proportional to
+brightness, and brightness is exponentially related to light
+intensity. The programs have to keep the intermediate intensity
+values in floating point in order not to lose precision. And the
+conversion (gamma function) between the two is heavy-duty floating
+point arithmetic.
+
+Programs that mix pixels together have to combine light intensity, so
+they do heavy floating point. Three of the most popular Netpbm
+programs do that:
+.BR "\fBpamscale\fP" (1)\c
+\&
+(shrink/expand an image),
+.BR "\fBpamcomp\fP" (1)\c
+\&
+(overlay an image over another one), and
+.BR "\fBpamditherbw\fP" (1)\c
+\& (Make a black and white
+image that approximates a grayscale image).
+.PP
+The Netpbm image formats use 16 bit integers. The Netpbm code uses
+"unsigned int" size integers to work with them.
+
+
+.UN netpbmforgimp
+.SH Netpbm For Gimp
+.PP
+The Gimp is a visual image editor for Unix and X, so it does the kinds
+of things that Netpbm does, but interactively in a user-friendly way.
+The Gimp knows a variety of graphics file formats and image transformations,
+but you can extend it with plugins.
+.PP
+A particularly easy way to write a Gimp plugin is to write a Netpbm program
+(remember that a fundamental mission of Netpbm is make writing image
+manipulation programs easy) and then use \fB
+.UR http://netpbm2gimp.sourceforge.net/
+netpbm2gimp
+.UE
+\&\fP to compile
+that same source code into a Gimp plugin.
+.PP
+You can turn a program that converts from a certain graphics file format
+to Netpbm format into a Gimp \fIload\fP plugin. Likewise, you
+can turn a program that converts \fIto\fP a certain graphics format
+\fIfrom\fP Netpbm format into a Gimp \fIstore\fP plugin. Finally,
+a program that transforms images in Netpbm format can become a
+\fIprocess\fP plugin.
+.PP
+And the \fBnetpbm2gimp\fP project has already packaged for you a few
+hundred of the Netpbm programs as Gimp plugins. With this package you can,
+for example, edit an image in any of the arcane graphics file formats that
+Netpbm understands but no other image editor in existence does.
+
+
+.UN companion
+.SH Companion Software
+
+.UN phpnetpbm
+.SS PHP-NetPBM
+.PP
+If you're using Netpbm to do graphics for a website, you can invoke
+the Netpbm programs from a PHP script. To make this even easier,
+check out
+.UR http://sourceforge.net/projects/phpnetpbm
+PHP-NetPBM
+.UE
+\&,
+a PHP class that interacts with Netpbm. Its main goal is to decrease the
+pain of using Netpbm when working with images in various formats. It
+includes macro commands to perform manipulations on many files.
+.PP
+I can't actually recommend PHP-NetPBM. I spent some time staring
+at it and was unable to make sense of it. Some documentation is in
+fractured English and other is in an unusual character set. But a PHP
+expert might be able to figure it out and get some use out of it.
+
+.UN othersoftware
+.SH Other Graphics Software
+.PP
+Netpbm contains primitive building blocks. It certainly is not a
+complete graphics software library.
+
+.UN othercmdline
+.SS Command Line Programs
+.PP
+\fBImageMagick\fP does many of the same things - mainly the more
+popular ones - that Netpbm does, including conversion between popular
+formats and basic editing. \fBconvert\fP, \fBmogrify\fP, \fBmontage\fP, and
+\fBanimate\fP are popular programs from the \fBImageMagick\fP
+package. \fBImageMagick\fP runs on Unix, Windows, Windows NT, Macintosh, and
+VMS.
+.PP
+\fBImageMagick\fP also contains the program \fBdisplay\fP, which is a
+.UR #viewers
+viewer
+.UE
+\& and
+.UR #visual
+visual editor
+.UE
+\&.
+
+.UN viewers
+.SS Image Viewers
+.PP
+The first thing you will want to make use of any of these tools is a
+viewer. (On GNU/Linux, you can use Netpbm's \fBpamx\fP or \fBppmsvgalib\fP
+in a pinch, but it is pretty limiting). \fBzgv\fP is a good full service
+viewer to use on a GNU/Linux system with the SVGALIB graphics display driver
+library. You can find \fBzgv\fP
+at \fB
+.UR ftp://ftp.ibiblio.org/pub/Linux/apps/graphics/viewers/svga
+ftp://ftp.ibiblio.org/pub/Linux/apps/graphics/viewers/svga
+.UE
+\&.\fP
+.PP
+\fBzgv\fP even has a feature in it wherein you can visually crop
+an image and write an output file of the cropped image using
+.BR "pamcut" (1)\c
+\&.
+
+See the \fB-s\fP option to \fBzgv\fP.
+.PP
+For the X inclined, there is also \fBxzgv\fP.
+.PP
+\fBxwud\fP (X Window Undump) is a classic application program in the X
+Window System that displays an image in an X window. It takes the special X
+Window Dump format as input; you can use
+Netpbm's
+.BR "\fBpnmtoxwd\fP" (1)\c
+\& to create it. You're
+probably better off just using Netpbm's
+.BR "\fBpamx\fP" (1)\c
+\&.
+.PP
+\fBxloadimage\fP and its extension \fBxli\fP are also common
+ways to display a graphic image in X.
+.PP
+\fBgqview\fP is a more modern X-based image viewer.
+.PP
+\fBqiv\fP is a small, very fast viewer for X.
+.PP
+To play mpeg movies, such as produced by \fBppmtompeg\fP,
+try
+.BR "mplayer" (1)\c
+\& or
+\fB
+.UR http://sourceforge.net/projects/xine
+xine
+.UE
+\&.\fP
+.PP
+See \fB
+.UR ftp://metalab.unc.edu/pub/Linux/apps/graphics/viewers/X
+ftp://metalab.unc.edu/pub/Linux/apps/graphics/viewers/X
+.UE
+\&\fP.
+
+.UN capturers
+.SS Image Capturers
+.PP
+\fBxwd\fP (X Window Dump), a classic application program in the X Window
+System, captures the contents of an X window, in its own special image format,
+called X Window Dump File. You can use
+Netpbm's
+.BR "\fBxwdtopnm\fP" (1)\c
+\& to turn it into something
+more useful.
+.PP
+.UR http://www.rcdrummond.net/fbdump/
+\fBfbdump\fP
+.UE
+\&
+Capturers the current contents of a video display on the local computer
+and generates a PPM image of it. It works with Linux framebuffer devices.
+
+
+.UN visual
+.SS Visual Graphics Software
+.PP
+Visual graphics software is modern point-and-click software that
+displays an image and lets you work on it and see the results as you go.
+This is fundamentally different from what Netpbm programs do.
+.PP
+\fBxv\fP is a very old and very popular simple image editor in the
+Unix world. It does not have much in the way of current support,
+or maintenance, though.
+.PP
+Gimp is a visual image editor for Unix and the X Window System, in the same
+category as the more famous, less capable, and much more expensive Adobe
+Photoshop, etc. for Windows.
+See \fB
+.UR http://www.gimp.org
+http://www.gimp.org
+.UE
+\&\fP. And you can
+add most of Netpbm's function to Gimp
+using
+.UR http://netpbm2gimp.sourceforge.net/
+Netpbm2gimp
+.UE
+\&.
+.PP
+\fBImageMagick\fP contains the program \fBdisplay\fP, which is another
+visual image editor. It has fewer functions than Gimp. This program uses the
+X Window System. The package also contains
+.UR #othercmdline
+command line
+.UE
+\& graphics programs.
+.PP
+Electric Eyes, \fBkuickshow\fP, and \fBgthumb\fP are also visual
+editors for the X/Window system, and \fBKView\fP and \fBgwenview\fP
+are specifically for KDE.
+
+.UN programmingtools
+.SS Programming Tools
+.PP
+If you're writing a program in C to draw and manipulate images, check out
+.UR https://github.com/libgd/libgd
+gd
+.UE
+\&. Netpbm contains a C library
+for drawing images (\fBlibnetpbm\fP's "ppmd" routines), but it is
+not as capable or documented as \fBgd\fP. There are wrapper libraries
+available for Perl, PHP, and other language.
+.PP
+You can easily run any Netpbm program from a C program with
+the \fBpm_system\fP function from the Netpbm programming library, but that is
+less efficient than \fBgd\fP functions that do the same thing.
+.PP
+.UR http://cairographics.org/
+Cairo
+.UE
+\& is similar.
+.PP
+\fBIlib\fP is a C subroutine library with functions for adding
+text to an image (as you might do at a higher level with
+\fBpbmtext\fP, \fBpamcomp\fP, etc.). It works with Netpbm input and
+output. Find it at \fB
+.UR http://www.k5n.us/Ilib.php
+k5n.us
+.UE
+\&\fP.
+Netpbm also includes character drawing functions in the
+.BR "libnetpbm" (1)\c
+\& library, but they do not have as
+fancy font capabilities (see
+.BR "ppmdraw" (1)\c
+\&
+for an example of use of the Netpbm character drawing functions).
+.PP
+.UR http://www.pango.org/
+Pango
+.UE
+\& is another text rendering
+library, with an emphasis on internationalization.
+.PP
+Pango and Cairo complement each other and work well together.
+.PP
+\fBGD\fP is a library of graphics routines that is part of PHP.
+It has a subset of Netpbm's functions and has been found to resize
+images more slowly and with less quality.
+
+.UN toolsforformats
+.SS Tools For Specific Graphics Formats
+.PP
+\fBmencode\fP, which is part of the
+.BR "mplayer" (1)\c
+\& package,
+creates movie files. It's like a much more advanced version of
+.BR "\fBppmtompeg\fP" (1)\c
+\&, without the Netpbm
+building block simplicity.
+.PP
+.UR http://mjpeg.sourceforge.net
+\fBMJPEGTools\fP
+.UE
+\& is software
+for dealing with the MJPEG movie format.
+.PP
+To create an animated GIF, or extract a frame from one, use
+\fBgifsicle\fP. \fBgifsicle\fP converts between animated GIF and
+still GIF, and you can use \fBpamtogif\fP and \fBgiftopnm\fP to
+connect up to all the Netpbm utilities. See \fB
+.UR http://www.lcdf.org/gifsicle
+http://www.lcdf.org/gifsicle
+.UE
+\&\fP.
+.PP
+To convert an image of text to text (optical character recognition
+- OCR), use \fBgocr\fP (think of it as an inverse of \fBpbmtext\fP).
+See \fB
+.UR http://jocr.sourceforge.net/
+http://jocr.sourceforge.net/
+.UE
+\&\fP.
+.PP
+\fB
+.UR http://schaik.com/pngsuite
+http://schaik.com/pngsuite
+.UE
+\&\fP
+contains a PNG test suite -- a whole bunch of PNG images exploiting the
+various features of the PNG format.
+.PP
+Other versions of Netpbm's \fBpnmtopng\fP/\fBpngtopam\fP are at
+.BR "
+http://www.schaik.com/png/pnmtopng.html" (1)\c
+\&.
+.PP
+The version in Netpbm was actually based on that package a long time
+ago, and you can expect to find better exploitation of the PNG format,
+especially recent enhancements, in that package. It may be a little
+less consistent with the Netpbm project and less exploitive of recent
+Netpbm format enhancements, though.
+.PP
+\fB
+.UR http://pngwriter.sourceforge.net
+pngwriter
+.UE
+\&\fP is a
+C++ library for creating PNG images. With it, you plot an image pixel
+by pixel. You can also render text with the FreeType2 library.
+.PP
+\fBjpegtran\fP Does some of the same transformations as Netpbm is
+famous for, but does them specifically on JPEG files and does them
+without loss of information. By contrast, if you were to use Netpbm,
+you would first decompress the JPEG image to Netpbm format, then
+transform the image, then compress it back to JPEG format. In that
+recompression, you lose a little image information because JPEG is a
+lossy compression. Of course, only a few kinds of lossless
+transformation are possible. \fBjpegtran\fP comes with the
+Independent JPEG Group's (
+.UR http://www.ijg.org
+http://www.ijg.org)
+.UE
+\& JPEG library.
+.PP
+ Some tools to deal with EXIF files (see also Netpbm's
+.BR "jpegtopnm" (1)\c
+\& and
+.BR "pnmtojpeg" (1)\c
+\&):
+
+To dump (interpret) an EXIF header: Exifdump ((
+.UR http://www.math.u-psud.fr/~bousch/exifdump.py
+http://www.math.u-psud.fr/~bousch/exifdump.py)
+.UE
+\&)
+or
+.UR http://www.sentex.net/~mwandel/jhead
+Jhead
+.UE
+\&.
+.PP
+A Python EXIF library and dumper:
+.UR http://pyexif.sourceforge.net.
+http://pyexif.sourceforge.net.
+.UE
+\&
+.PP
+Here's some software to work with IOCA (Image Object Content
+Architecture):
+.UR http://www.forminnovation.com
+ImageToolbox
+.UE
+\& ($2500, demo
+available). This can convert from TIFF -> IOCA and back again.
+.PP
+.UR https://ameri-imager.software.informer.com/
+Ameri-Imager
+.UE
+\& is
+an image and video editor. ($40 Windows only).
+.PP
+\fBpnm2ppa\fP converts to HP's "Winprinter" format (for
+HP 710, 720, 820, 1000, etc). It is a superset of Netpbm's
+\fBpbmtoppa \fP and handles, notably, color. However, it is more of
+a printer driver than a Netpbm-style primitive graphics building
+block. See
+.UR http://sourceforge.net/projects/pnm2ppa
+The Pnm2ppa /Sourceforge Project
+.UE
+\&
+.PP
+\fBDjVuLibre\fP is a package of software for using the DjVu
+format. It includes viewers, browser plugins, decoders, simple
+encoders, and utilities. The encoders and decoders can convert
+between DjVu and PNM. See
+.UR http://djvu.sourceforge.net/
+ the DjVu website.
+.UE
+\&
+
+
+.UN document
+.SS Document/Graphics Software
+.PP
+There is a large class of software that does document processing,
+and that is somewhat related to graphics because documents contain
+graphics and a page of a document is for many purposes a graphic
+image. Because of this slight intersection with graphics, I cover
+document processing software here briefly, but it is for the most part
+beyond the scope of this document.
+.PP
+First, we look at where Netpbm meets document processing.
+\fBpstopnm\fP converts from Postscript and PDF to PNM. It
+effectively renders the document into images of printed pages.
+\fBpstopnm\fP is nothing but a convenient wrapper for
+.UR http://www.ghostscript.com/
+Ghostscript
+.UE
+\&, and in particular
+Netpbm-format device drivers that are part of it. \fBpnmtops\fP and
+\fBpbmtoepsi\fP convert a PNM image to a Postscript program for
+printing the image. But to really use PDF and Postscript files, you
+generally need more complex document processing software.
+.PP
+Adobe invented Postscript and PDF and products from Adobe are for many
+purposes the quintessential Postscript and PDF tools.
+.PP
+Adobe's free Acrobat Reader displays PDF and converts to
+Postscript. The Acrobat Reader for unix has a program name of
+"acroread" and the -toPostScript option (also see the
+-level2 option) is useful.
+.PP
+Other software from Adobe, available for purchase, interprets and creates
+Postscript and PDF files. "Distill" is a program that converts Postscript to
+PDF.
+.PP
+.UR http://www.foolabs.com/xpdf/
+\fBxpdf\fP
+.UE
+\& also reads PDF
+files.
+.PP
+GSview, ghostview, gv, ggv, and kghostview are some other viewers for
+Postscript and PDF files.
+.PP
+The program \fBps2pdf\fP, part of Ghostscript, converts from Postscript
+to PDF.
+.PP
+.BR "bmpp" (1)\c
+\& converts from
+Netpbm and other formats to PDF.
+
+.PP
+Two packages that produce more kinds of Encapsulated Postscript
+than the Netpbm programs, including compressed kinds, are
+.BR "bmpp" (1)\c
+\& and
+.UR http://imgtops.sourceforge.net/
+imgtops
+.UE
+\&.
+.PP
+\fBdvips\fP converts from DVI format to Postscript. DVI is the format
+that Tex produces. Netpbm can convert from Postscript to PNM. Thus, you
+can use these in combination to work with Tex/Latex documents graphically.
+.PP
+.UR http://wvware.sourceforge.net
+\fBwvware\fP
+.UE
+\& converts
+a Microsoft Word document (.doc file) to various other formats. While
+the web page doesn't seem to mention it, it reportedly can extract an
+embedded image in a Word document as a PNG.
+.PP
+.UR http://www.verypdf.com/artprint
+Document Printer
+.UE
+\&
+converts various print document formats (Microsoft Word, PDF, HTML, etc.)
+to various graphic image formats. ($38, Windows only).
+.PP
+Latex2html converts Latex document source to HTML document source.
+Part of that involves graphics, and Latex2html uses Netpbm tools for
+some of that. But Latex2html through its history has had some rather
+esoteric codependencies with Netpbm. Older Latex2html doesn't work
+with current Netpbm. Latex2html-99.2beta8 works, though.
+
+.UN otherothersoftware
+.SS Other
+.PP
+The \fBfile\fP program looks at a file and tells you what kind of
+file it is. It recognizes most of the graphics formats with which
+Netpbm deals, so it is pretty handy for graphics work. Netpbm's
+.BR "anytopnm" (1)\c
+\& program depends on \fBfile.\fP
+See
+\fB
+.UR ftp://ftp.astron.com/pub/file
+ftp://ftp.astron.com/pub/file
+.UE
+\&\fP.
+.PP
+The
+.UR http://www.cs.utah.edu/gdc/projects/urt
+Utah Raster Toolkit
+.UE
+\& from the
+.UR http://www.cs.utah.edu/gdc
+Geometric Design And Computation group
+.UE
+\& in the Department of Computer Science at University of
+Utah serves a lot of the same purpose as Netpbm, but without the emphasis on
+format conversions. This package is based on the RLE format, which you can
+convert to and from the Netpbm formats.
+.PP
+\fBIvtools\fP is a suite of free X Window System drawing editors for
+Postscript, Tex, and web graphics production, as well as an embeddable
+and extendable vector graphic shell. It uses the Netpbm facilities.
+See \fB
+.UR http://www.ivtools.org
+http://www.ivtools.org
+.UE
+\&\fP.
+.PP
+Chisato Yamauchi <cyamauch@ir.isas.jaxa.jp> has written a free
+c/Fortran graphic library:
+.UR http://www.ir.isas.jaxa.jp/~cyamauch/eggx_procall/
+EGGX/ProCall
+.UE
+\&.
+He says he tried to write the ultimate easy-to-use graphic kit for X. It is
+for drawing upon an X11 window, but for storage, it outputs PPM. He suggests
+Netpbm to convert to other formats.
+.PP
+The program \fBmorph\fP morphs one image into another. It uses
+Targa format images, but you can use \fBtgatoppm\fP and
+\fBppmtotga\fP to deal with that format. You have to use the
+graphical (X/Tk) Xmorph to create the mesh files that you must feed to
+\fBmorph\fP. \fBmorph\fP is part of the Xmorph package. See \fB
+.UR http://xmorph.sourceforge.net/
+http://xmorph.sourceforge.net/
+.UE
+\&\fP.
+
+
+.UN otherfmt
+.SH Other Graphics Formats
+.PP
+People never seem to tire of inventing new graphics formats, often
+completely redundant with pre-existing ones. Netpbm cannot keep up
+with them. Here is a list of a few that we know Netpbm does
+\fInot\fP handle (yet).
+.PP
+Various commercial Windows software handles dozens of formats that
+Netpbm does not, especially formats typically used with Windows programs.
+ImageMagick is probably the most used free image format converter and it
+also handles lots of formats Netpbm does not.
+
+
+
+.IP \(bu
+WebP was announced by Google in October 2010 as a more compressed
+replacement for JFIF (aka JPEG) on the web.
+
+.IP \(bu
+JPEG-LS is similar to JFIF (aka JPEG) except that it is capable of
+representing all the information in any raster image, so you could convert
+from, say, PNM, without losing any
+information.
+.UR http://charls.codeplex.com
+CharLS
+.UE
+\& is a programming
+library for JPEG-LS.
+
+
+.IP \(bu
+Lossless JPEG is a similarly lossless variation of JPEG. It predates
+every other lossless JPEG variation, but had only brief interest. You can
+find code for encoding and decoding Lossless JPEG
+on
+.UR https://github.com/thorfdbg/libjpeg
+GitHub
+.UE
+\&.
+
+.IP \(bu
+JPEG XR offers greater dynamic range, a wider range of colors, and more
+efficient compression than JFIF (aka JPEG). Windows and Internet Explorer
+understand this format, starting with Windows 7 and Internet Explorer 9, along
+with many other programs. This format was previously known as Windows Media
+Photo and HD Photo.
+
+.IP \(bu
+Direct Draw Surface (DDS)is the de facto standard wrapper format for S3
+texture compression, as used in all modern realtime graphics applications.
+Besides Windows-based tools, there is a \fBGimp\fP plugin for this format.
+
+.IP \(bu
+DjVu is a web-centric format and software platform for
+distributing documents and images. Promoters say it is a good
+replacement for PDF, PS, TIFF, JFIF(JPEG), and GIF for distributing scanned
+documents, digital documents, or high-resolution pictures, because it
+downloads faster, displays and renders faster, looks nicer on a
+screen, and consumes less client resources than competing formats.
+.sp
+For more information, see
+.UR http://djvu.sourceforge.net/
+ the DjVu website.
+.UE
+\&
+
+.IP \(bu
+
+.UR http://www.web3d.org/x3d/specifications/vrml
+VRML (Virtual Reality Modelling Language)
+.UE
+\&
+
+.IP \(bu
+
+CALS (originated by US Department Of Defense, favored by architects).
+It is described in this 1997 listing of graphics formats:
+.UR http://www.faqs.org/faqs/graphics/fileformats-faq/part3/
+ http://www.faqs.org/faqs/graphics/fileformats-faq/part3/
+.UE
+\&. CALS
+has at times been an abbreviation of various things, all of which appear
+to be essentially the same format, but possibly slightly different:
+
+
+.IP \(bu
+Computer Aided Logistics Support
+.IP \(bu
+Computer Aided Acquisition and Logistics Support
+.IP \(bu
+Continuous Acquisition and Life-cycle Support
+.IP \(bu
+Commerce At Light Speed
+
+
+
+The US Navy publishes
+.UR https://www.navsea.navy.mil/Home/Warfare-Centers/NSWC-Carderock/Resources/Technical-Information-Systems/IETMs/Specifications-Standards/CALS-Standards/
+specs
+.UE
+\&
+for it.
+
+.IP \(bu
+
+array formats dx, general, netcdf, CDF, hdf, cm
+.IP \(bu
+
+CGM+
+
+.IP \(bu
+HDR formats OpenEXR, SGI TIFF LogLuv, floating point TIFF,
+Radiance RGBE
+
+.IP \(bu
+Windows Meta File (.WMF). Libwmf converts from WMF to things like
+Latex, PDF, PNG. Some of these can be input to Netpbm.
+
+.IP \(bu
+Microsoft Word .doc format. Microsoft keeps a proprietary hold on
+this format. Any software you see that can handle it is likely to
+cost money.
+
+.IP \(bu
+RTF
+
+.IP \(bu
+
+DXF (AutoCAD)
+.IP \(bu
+
+IOCA (Image Object Content Architecture)
+The specification of this format is documented by IBM:
+.UR http://publibz.boulder.ibm.com/epubs/pdf/c3168055.pdf
+ Data Stream and Object Architectures: Image Object Content Architecture Reference
+.UE
+\&. See above for software that processes this format.
+
+.IP \(bu
+OpenEXR is an HDR format (like
+.BR "PFM" (1)\c
+\&).
+See
+.UR http://www.openexr.com
+ http://www.openexr.com
+.UE
+\&.
+
+.IP \(bu
+Xv Visual Schnauzer thumbnail image. This is a rather antiquated
+format used by the Xv program. In Netpbm circles, it is best known
+for the fact that it is very similar to Netpbm formats and uses the
+same signature ("P7") as PAM because it was developed as
+sort of a fork of the Netpbm format specifications.
+
+.IP \(bu
+YUV 4:2:0, aka YUV 420, and the similar YUV 4:4:4, YUV 4:2:2,
+YUV 4:1:1, YUV 4:1:1s, and YUV 4:1:0. Video systems often use this.
+
+.IP \(bu
+
+.UR http://en.wikipedia.org/wiki/MJPEG
+MJPEG
+.UE
+\& movie
+format.
+
+.IP \(bu
+YUV4MPEG2 is a movie format whose purpose is similar to that of
+the Netpbm formats for still images. You use it for manipulating
+movies, but not for storing or transmitting them. The only known use
+of the format is with
+.UR http://mjpeg.sourceforge.net
+\fBMJPEGTools\fP
+.UE
+\&. The programs
+\fBpnmtoy4m\fP and \fBy4mtopnm\fP (and predecessors \fBppmtoy4m\fP
+and \fBy4mtoppm\fP) in that package convert between a Netpbm stream
+and a YUV4MPEG2 stream. As you might guess from the name, YUV4MPEG2
+uses a YUV representation of data, which is more convenient than the
+Netpbm formats' RGB representation for working with data that is
+ultimately MPEG2.
+
+
+
+.UN history
+.SH History
+.PP
+Netpbm has a long history, starting with Jef Poskanzer's Pbmplus
+package in 1988. See the
+.BR "Netpbm web site" (1)\c
+\&
+for details.
+.PP
+The file \fBdoc/HISTORY\fP in the Netpbm source code contains a
+detailed change history release by release.
+
+
+.UN author
+.SH Author
+.PP
+Netpbm is based on the Pbmplus package by Jef Poskanzer, first
+distributed in 1988 and maintained by him until 1991. But the package
+contains work by countless other authors, added since Jef's original
+work. In fact, the name is derived from the fact that the work was
+contributed by people all over the world via the Internet, when such
+collaboration was still novel enough to merit naming the package after
+it.
+.PP
+Bryan Henderson has been maintaining Netpbm since 1999. In
+addition to packaging work by others, Bryan has also written a
+significant amount of new material for the package.
+.SH DOCUMENT SOURCE
+This manual page was generated by the Netpbm tool 'makeman' from HTML
+source. The master documentation is at
+.IP
+.B http://netpbm.sourceforge.net/doc/index.html
+.PP \ No newline at end of file