This is the home page for Netpbm.

There are translations of this page into Arabic, Portuguese, French, Japanese, Vietnamese, Italian, Turkish, Ukrainian, Romanian, Filipino, Sindhi, Dutch, Swedish, Hungarian, Hebrew, Danish, Albanian, Croatian, Slovak, Norwegian, and Georgian.

About Netpbm

Netpbm is a toolkit for manipulation of graphic images, including conversion of images between a variety of different formats. There are over 350 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.

For details, look at the user manual.

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 Linux system.

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. The programs are useful invoked from a typed shell command, but most are also oriented toward being used internally by a program.

Getting Netpbm

See 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

See below for a quick list of Debian packages you can install and then probably be able to build Netpbm from source (which you don't normally need to do because Debian includes Netpbm).

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. You need the basic Perl interpreter and the core modules (warning: these are separate packages on Fedora). 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.

Any C compiler that implements the C89 standard (which means probably any C compiler you will encounter) should work.

Netpbm requires a C runtime library (libc) that implements Single Unix Specification, version 2 (ca. 1997). Some compilers or C runtime libraries, including MinGW, incorrectly implement feature test macros and either the library header files or Netpbm must be slightly modified for the code to compile. The GNU C library at Version 2 or higher should work, which includes any Linux distribution you're likely to encounter.

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

Debian Prerequisite Package

The following command on a Debian system should get you everything you need to get, build, and install Netpbm from source. (It worked in Debian 10).

    
      $ apt-get install subversion make pkg-config gcc perl-modules flex \
        libjpeg-dev libtiff-dev libpng-dev libx11-dev libxml2-dev \
        ghostscript gsfonts
    
  

Legal Usability

Netpbm consists of code contributed by many authors and most of them, or in some cases their employers, have copyright in the parts they wrote. 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. There are no active patents known to the Netpbm maintainer covering Netpbm, but there used to be, detailed 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,

  1. pnmtopng/pngtopnm (Converts to/from PNG)
  2. pnmtops (Converts to Postscript)
  3. ppmtogif/giftopnm (Converts to/from GIF)
  4. pnmquant (Quantizes colors)
  5. pamscale (Scales images - expands and shrinks images)
  6. tifftopnm/pnmtotiff (Converts to/from TIFF)
  7. jpegtopnm (Converts to JFIF)
  8. ppmtopgm (Converts color to grayscale)
  9. pamcut (Crops images)
  10. bmptopnm/ppmtobmp (Converts to/from BMP).

The ten most popular not counting converters were

  1. pnmquant (Quantizes colors)
  2. pamscale (Scales images - expands and shrinks images)
  3. pamcut (Crops images)
  4. pamfile (Reports dimensions of an image)
  5. pnmcrop (Removes borders from images)
  6. pamflip (Flips images around various ways)
  7. pnminvert (Exchanges black for white)
  8. pnmrotate (Rotates images)
  9. ppmdist (Enhances contrast)
  10. 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.

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.

Translations of this page

Translations available:
  • Arabic by contactcustomerserviceuk.co.uk
  • Portuguese by Murat Demir
  • French by KoDDos
  • Japanese by Akira Urushibata
  • Vietnamese by CouponoBox
  • Italian, by Clipart Team
  • Turkish by Clipart Team
  • Ukrainian, by Anna Matesh
  • Romanian, by Irina Vasilescu
  • Filipino, by Hum3D
  • Sindhi by Mobile Mall
  • Dutch by Coupontoaster UK
  • Swedish, by VoucherSort
  • Hungarian, by Vouchers4U
  • Hebrew, by Idan Baranes
  • Danish by tr-ex.me
  • Albanian, by Knowledge Team
  • Croatian, by Milica Novak
  • Slovak, by imgVEHICLE Team
  • Norwegian, by Lars Olden.
  • Georgian, by Ana Mirilashvili.
    By Bryan Henderson, Lacey, WA; bryanh@giraffe-data.com last checked 2023.06.27