About Netpbm

Netpbm is a toolkit for manipulation of graphic images, including
conversion of images between a variety of different formats. There
are over 300 separate tools in the package including converters for
about 100 graphics formats. Examples of the sort of image
manipulation we're talking about are: Shrinking an image by 10%;
Cutting the top half off of an image; Making a mirror image; Creating
a sequence of images that fade from one image to another.

The package is intended to be portable to many platforms. It has, at
least at one time, been tested under various Unix-based systems,
Windows, Mac OS X, VMS and Amiga OS. The maintainer uses and builds
it on a platform that consists (in relevant part) mainly of GNU
software (you probably know this kind of system by the name "Linux").

The goal of Netpbm is to be a single source for all the primitive
graphics utilities, especially converters, one might need. So if you
know of some freely redistributable software in this vein which is not
in the package yet, you should bring it to the attention of the Netpbm
maintainer so it can be included in the next release.

Netpbm does not contain interactive tools and doesn't have a graphical
interface.

Getting Netpbm

Building and Installing

Instructions for building and installing Netpbm are in the Netpbm
source tree in file doc/INSTALL.

Support

There is no mailing list or tracking system for bug reports and
requests for help. Just send an email to the maintainer, Bryan
Henderson, at bryanh@giraffe-data.com.
Bryan responds fairly quickly and reliably.

Please check the change history for your
release series first to see if the bug has already been fixed. The
--version option on most Netpbm programs tells you which
release you are using.

There is no bug tracking system because there aren't enough bug
reports to make it worthwhile. The maintainer responds to each
emailed bug report immediately.

Note that there is generally no such thing as a bug that has been
reported but does not have a fix listed in the change history.
That's because when a bug is reported, there is a new release within a
few days to fix it (or a documentation change making it not a bug).

Development

Netpbm is maintained and distributed via a Sourceforge project.

Prerequisites

If you have trouble getting, building, or installing the
prerequisites, the Netpbm maintainer wants to know. Since he uses
them himself, he can help you. And if there is a problem with a
prerequisite package that its own maintainer cannot fix, it may be
possible to ship a fix with Netpbm.

To build and install Netpbm, you need GNU Make and a Perl
interpreter. You can get GNU Make from The GNU Project and Perl from
CPAN. It's possible to get around
the Perl requirement by running some of the steps on a different
machine that has Perl and doing others manually. There is no
practical substitute for GNU Make.

The Netpbm package as a whole uses over half a dozen external
libraries, but you don't necessarily need to install them all in order
to build Netpbm. Each library is used by a few Netpbm programs, and
if you don't have the library, the Netpbm build will automatically
skip building those parts. See the Prerequisite
List.

pstopnm (the Postscript to PNM image converter) requires Ghostscript (installed
with the name gs in your command search path). And it
requires in particular that Ghostscript be built with the relevant PNM
device drivers.

Netpbm requires about 6 MiB of disk space, not including documentation.
The documentation is 2 MiB, but you don't necessarily have to install
it; you can just access the public copy.

Legal Usability

Netpbm consists of code contributed by many authors and most of them have
copyright in at least the code they wrote, and maybe larger parts derived from
it. All authors have granted you the right to use and distribute their code
without having to pay them, as long as you meet some simple requirements. All
of these public licenses are "open source" licenses as defined by
SourceForge (SourceForge makes that a condition of distributing the code).

You can generally find an offer of a copyright license within the source
code files. GPL, BSD, MIT, and BSD licenses are among those offered. Steve
McIntyre did a survey of the source code in 2001 for the purpose of
determining what could be included in Debian and summarized what he found in
the
file copyright_summary
in the source tree.

Of course, with Netpbm as with most open source software, you can't be sure
who wrote the code or if the license offers you find are actually from the
people who hold the copyright. Someone at some time may have copied code
without permission and contributed it to Netpbm, which means if you copy it
further, you could owe the copyright owner royalties. However, the risk of
this should be small because no contributions to Netpbm are valuable enough
that such a copyright owner would bother enforcing the copyright.

The Netpbm maintainer has not received any warranties that the code is
licensed and does not offer any such warranties to anyone else.

There could be patents practiced by Netpbm code, which would make a user
of the code liable for royalties to the patent holder. The Netpbm maintainer
has no license to use any patents. What is known about patents affecting
Netpbm is in the file
patent_summary
in the source tree.

Using Netpbm In A Website

Many people use Netpbm to perform graphics functions in a web site. They
have CGI scripts that invoke Netpbm programs to process images for display
on a web page. Gallery and 4Images are two web site software packages
that rely on Netpbm for graphics manipulation.

Installing Netpbm requires different skills and system access than
installing most other web site software. You must be able to compile
C code for the web server machine and have a basic understanding of
how files are organized and programs run on the web server. Diagnosing
inevitable problems usually requires shell access to the web server.

Netpbm is basic graphics software that ought to be supplied by any
web hosting service. If it isn't on your web server already, you should
request that the system administrator add it.

Popularity

Netpbm's popularity is mostly historical. There was a time when it was the
premier graphics processing package in the world, but that was a time when
computers were mainly used by engineers and scientists - people who were
comfortable typing shell commands and writing programs. It was a time when
graphical user interfaces were weak and rare. Today, a few of Netpbm's 300+
programs are quite popular, but most of them are used mainly by very old
programs and even older programmers. A person is more likely to crop a
picture today using Adobe Photoshop or Gimp than Netpbm's pnmcrop or
convert from GIF to PNG with ImageMagick.

Another reason for declining popularity is that Netpbm's main feature when
it was new was its ability to convert among graphics formats. All but eight
of the 100 formats Netpbm knows are seen only in museums today.

None of this means Netpbm is obsolete. Among the niche of engineers who
appreciate modular design, code reuse, and building things from building
blocks, Netpbm has no equal. These people continue to use it in large
numbers, and there are new releases, usually containing new features, every
three months.

In June 2012, Netpbm developer and user Akira F Urushibata did a study of
The Linux-based operating system Fedora and found that 114 Netpbm programs
were used to some extent in at least one Fedora package. This included
converters for 34 graphics formats.

The ten most popular (by count of packages using it) Netpbm programs in
Fedora were, in order from the most popular:

pnmtopng/pngtopnm (Converter for PNG)

pnmtops (Converter for Postscript)

ppmtogif/giftopnm (Converter for GIF)

pnmquant (Color quantizer)

pamscale (Image scaler - expands and shrinks images)

tifftopnm/pnmtotiff (Converter for TIFF)

jpegtopnm (Converter for JFIF)

ppmtopgm (Converter)

pamcut (Crops images)

bmptopnm/ppmtobmp (Converter for BMP).

The ten most popular not counting converters were:

pnmquant (Color quantizer)

pamscale (Image scaler - expands and shrinks images)

pamcut (Crops images)

pamfile (Reports dimensions of an image)

pnmcrop (Removes borders from images)

pamflip (Flips images around various ways)

pnminvert (Exchanges black for white)

pnmrotate (Rotates images)

ppmdist (Enhances contrast)

ppmnorm (Enhances contrast)

It's worth noting that the actual package dependencies show far less use of
Netpbm than these numbers indicate. This study was done by searching for
names of Netpbm programs in the packages' files.

Download counts are not possible because Netpbm distributes mainly through
Subversion checkout.

(This section was last known current in June 2012).

History

Netpbm's history stretches back to 1988.
Briefly: Netpbm replaces the widely spread Pbmplus package (last
released December 10, 1991). Myriad improvements and additions have
been made. After the latest release of Pbmplus, a lot of additional
filters began circulating on the net, which was a fairly novel state
of affairs at the time. The aim of Netpbm was to collect these and to
turn them into a package, hence the name "Netpbm." This work has been
performed by programmers all over the world.

For detailed code change history, see change.html. From here, you can tell if a
certain bug has been fixed since the release in which you see it, and
what new features are in newer releases than what you have.

By Bryan Henderson, San Jose, CA; bryanh@giraffe-data.com
last checked 2015.06.06.