N E T P B M
Release 7 December 1993
Netpbm is a toolkit for conversion of images between a variety of
different formats, as well as to allow a few basic image operations.
The package is intended to be portable to many platforms. It has been
tested under UNIX (BSD and SYSV, e.g. SGI, Sun4, Sun386i, DEC and
Apollo DN 3500), VMS and Amiga OS. There are also compiler directives
in it for MS-DOS.
You'll find the latest release of Netpbm at the following sites:
* wuarchive.wustl.edu (128.252.135.4),
directory /graphics/graphics/packages/NetPBM
* ikaros.fysik4.kth.se (130.237.35.2), directory /pub/netpbm.
* ftp.informatik.uni-oldenburg.de (134.106.1.9). This site also carries
binaries for the Amiga.
* peipa.essex.ac.uk (155.245.115.161), directory ipa/src/manip
* ftp.rahul.net (192.160.13.1), directory /pub/davidsen/source
* ftp.cs.ubc.ca, directory /ftp/archive/netpbm
You'll also find a mirror site at the BBS:
* sixhub.tmr.com, phone +1 518 3468033, in the "source" area.
Netpbm is based on the widely spread Pbmplus package (release: 10 Dec 91).
On top of that, a lot of improvements and additions have been made. After
the latest release of Pbmplus, a lot of additional filters have been
circulating on the net. The aim of Netpbm was, to collect these and to turn
them into a package. This work has been performed by a group of program-
mers all over the world. If *you* have some code to add, please contact us,
and we will incorporate it. There is a mailing list for discussions about
Netpbm. You post a message to the list by writing to "netpbm@fysik4.kth.se".
If you want to be on the list, send a mail with the message "subscribe netpbm"
to "majordomo@fysik4.kth.se". If you want to report a bug, please send
your report to netpbm@fysik4.kth.se, and to the author of Pbmplus,
jef@netcom.com.
Please note, that this is not an official Pbmplus release. The code in
this release is merely a collection of code from various sources around
the world. Not all of the new code parts follow the high standard of
programming of Pbmplus. We have tried to make the code portable to as
many systems as possible, but we haven't cleaned up all routines. We hope
that this release will help the many users of Pbmplus to upgrade their
code all in one piece, instead of having to hunt down different code
fragments at different sites around the world. We also hope, that our
effort will help the author of Pbmplus, Jef Poskanzer, to make a new
official release soon.
The file Netpbm lists all new featues and functions in netpbm.
Below this line follows the original README file from Pbmplus.
***************************************************************
Extended Portable Bitmap Toolkit
Distribution of 10dec91
Previous distribution 30oct91
PBMPLUS is a toolkit for converting various image formats to and from
portable formats, and therefore to and from each other. The idea is,
if you want to convert among N image formats, you only need 2*N
conversion filters, instead of the N^2 you would need if you wrote each
one separately.
In addition to the converters, the package includes some simple tools
for manipulating the portable formats.
The package is broken up into four parts. First is PBM, for bitmaps (1
bit per pixel). Then there is PGM, for grayscale images. Next is PPM,
for full-color images. Last, there is PNM, which does content-independent
manipulations on any of the three internal formats, and also handles
external formats that have multiple types.
The parts are upwards compatible: PGM reads both PGM and PBM files and
writes PGM; PPM reads all three and writes PPM; and PNM reads all three
and writes, usually, the same type as it read. Whenever PNM makes an
exception and "promotes" a file to a higher format, it lets you know.
INSTALLATION
Unpack the files.
If you have the TIFF library (./libtiff) and are going to use it, copy the
appropriate Makefile into place, read the comments in libtiff/README,
and edit libtiff/tiffconf.h or the Makefile to reflect your compiler and
options.
Decide whether you want to use Imakefiles or Makefiles. If you want
to use Makefiles:
Edit the top-level Makefile, find each line with the string
"CONFIGURE", and follow the directions for setting configuration
options.
Likewise edit pbmplus.h.
If you are using gnu make, you have to edit *all* the Makefiles
and remove all the imake stuff at the ends, otherwise gnu make
will overwrite the Makefiles.
Make.
When you're happy that things compiled ok, make install.
If you want to use Imakefiles:
Edit Pbmplus.tmpl, find each line with the string "CONFIGURE",
and follow the directions for setting configuration options.
Likewise edit pbmplus.h.
Save the original Makefiles, in case you later want to switch back
to using them.
The usual X11 sequence of xmkmf, make Makefiles, make depend, then
make should work. If you have the TIFF libraries, the second step
should be "make SUBDIRS='./pbm ./pgm ./ppm ./pnm' Makefiles".
When you're happy that things compiled ok, make install and
make install.man.
After installing the manual pages, you may want to create the "whatis"
file by doing a catman -w -M <directory>, or whatever the equivalent is
on your system.
SUPPORT
I've tested this stuff under SysV and BSD, on Sun 3's 4's and 386's and
Sequents and Vaxen and HPs, with cc and gcc. Nevertheless, I'm sure bugs
remain, and portability to systems like Amigas and IBM compatibles is
an interesting question. Feedback is welcome; send bug reports,
enhancements, etc. to this address:
jef@well.sf.ca.us
apple!well!jef
When sending bug reports, always include the output from running any
PBMPLUS program with the -version flag. Also include the type of
system you are on, what compiler you used, and whether you are using
Makefiles or Imakefiles. I try to respond to bug reports and enhancements
promptly; say, within a week.
Also, if there is a new format or feature you would like to have added
to the package, feel free to drop me a line. If it's a format, include
whatever documentation you have, and if possible a uuencoded sample.
My response time will depend on how busy I am, and how easy the job
looks. If you need it right away, or it's a complicated job, you might
consider paying me; lately, that's how a lot of work on the package has
gotten done.
Finally, if you have access to Usenet, there's a newsgroup called
alt.graphics.pixutils which is specifically for discussion of image
conversion and editing packages such as PBMPLUS. Posting stuff there
is even better than mailing it to me, since it lets other people help
out with the answers.
HOW TO FIND THE RIGHT CONVERTER
Some people get confused by all the different names. If you want to
convert a pbm file to a Sun raster file, is it pbmtorast, pgmtorast,
ppmtorast, or pnmtorast? In this case some of the confusion might be
because previous versions of the package did in fact have both
pbmtorast and ppmtorast. But mostly it's just too many different
things to hold in your short term memory. Fine, so don't even try to
remember what's what. That's what computers are for. Unix, at least
BSD Unix, has this great indexing feature on the "man" program. You
say "man -k <keyword>" and it gives you all the one-line descriptions
with that keyword in them. All the PBMPLUS man pages have nice useful
one-line descriptions, that mention all the relevant keywords. Try it,
you'll like it.
COPYRIGHTS
All the software in this package, whether by me or by a contributer,
has a copyright similar to this one:
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, provided
that the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation. This software is provided "as is" without express or
implied warranty.
Many people get confused by this legalese, especially the part about
"without fee". Does this mean you can't charge for any product that
uses PBMPLUS? No. All it means is that you don't have to pay me.
You can do what you want with this software. Build it into your
package, steal code from it, whatever. Just be sure to let people
know where it came from.
CONTENTS
Files in pbmplus.shar:
README this
CHANGES list of changes between the various versions of PBM
TODO list of things still to be done
FORMATS list of the formats supported
OTHER.SYSTEMS list of other free image-processing software
Makefile guess
Imakefile for X11-type installations
Imakefile.tiff for X11-type installations
Pbmplus.tmpl for X11-type installations
pbmplus.h header file for PBM, PGM, PPM, and PNM
compat.csh csh script for compatibility with old versions
compat.ksh ksh script for compatibility with old versions
magic additions for /etc/magic to recognize some image formats
Files in pbm.shar?:
Makefile guess
Imakefile for X11-type installations
atktopbm.c convert Andrew Toolkit raster object to portable bitmap
brushtopbm.c convert Xerox doodle brushes to portable bitmap
cmuwmtopbm.c convert CMU window manager format to portable bitmap
g3topbm.c convert Group 3 FAX to portable bitmap
icontopbm.c convert Sun icon to portable bitmap
gemtopbm.c convert GEM .img format to portable bitmap
macptopbm.c convert MacPaint to portable bitmap
mgrtopbm.c convert MGR format to portable bitmap
pi3topbm.c convert Atari Degas .pi3 to portable bitmap
xbmtopbm.c convert X10 or X11 bitmap to portable bitmap
ybmtopbm.c convert Bennet Yee "face" file into portable bitmap
pbmto10x.c convert portable bitmap to Gemini 10x printer graphics
pbmtoascii.c convert portable bitmap to ASCII graphic form
pbmtoatk.c convert portable bitmap to Andrew Toolkit raster object
pbmtobbnbg.c convert portable bitmap to BBN BitGraph graphics
pbmtocmuwm.c convert portable bitmap to CMU window manager format
pbmtoepson.c convert portable bitmap to Epson printer graphics
pbmtog3.c convert portable bitmap to Group 3 FAX
pbmtogem.c convert portable bitmap into GEM .img file
pbmtogo.c convert portable bitmap to GraphOn graphics
pbmtoicon.c convert portable bitmap to Sun icon
pbmtolj.c convert portable bitmap to HP LaserJet graphics
pbmtomacp.c convert portable bitmap to MacPaint
pbmtomgr.c convert portable bitmap to MGR format
pbmtopi3.c convert portable bitmap to Atari Degas .pi3
pbmtoplot.c convert portable bitmap into Unix plot(5) file
pbmtoptx.c convert portable bitmap to Printronix graphics
pbmtoxbm.c convert portable bitmap to X11 bitmap
pbmtox10bm.c convert portable bitmap to X10 bitmap
pbmtoybm.c convert portable bitmap into Bennet Yee "face" file
pbmtozinc.c convert portable bitmap to Zinc Interface Library icon
pbmlife.c apply Conway's rules of Life to a portable bitmap
pbmmake.c create a blank bitmap of a specified size
pbmmask.c create a mask bitmap from a regular bitmap
pbmreduce.c reduce a portable bitmap N times, using Floyd-Steinberg
pbmtext.c render text into a bitmap
pbmupc.c create a Universal Product Code bitmap
libpbm[1-5].c a few utility routines
pbmmerge.c merge wrapper routine
pbm.h header file for libpbm
pbmfont.h header file for font routines in libpbm
libpbm.h internal header file for libpbm
g3.h definitions for Group 3 FAX
macp.h definitions for MacPaint files
bitreverse.h useful include file
*.1 manual entries for all of the tools
pbm.5 manual entry for the pbm format
libpbm.3 manual entry for the pbm library
Files in pgm.shar?:
Makefile guess
Imakefile for X11-type installations
fitstopgm.c convert FITS format to portable graymap
fstopgm.c convert Usenix FaceSaver(tm) format to portable graymap
hipstopgm.c convert HIPS format to portable graymap
lispmtopgm.c convert a Lisp Machine bitmap file into pgm format
psidtopgm.c convert PostScript "image" data to portable graymap
rawtopgm.c convert raw grayscale bytes to portable graymap
pgmtofits.c convert portable graymap to FITS format
pgmtofs.c convert portable graymap to Usenix FaceSaver(tm) format
pgmtolispm.c convert a portable graymap into Lisp Machine format
pgmtopbm.c convert portable graymap to portable bitmap
pgmbentley.c Bentleyize a portable graymap
pgmcrater.c create cratered terrain by fractal forgery
pgmedge.c edge-detect a portable graymap
pgmenhance.c edge-enhance a portable graymap
pgmhist.c print a histogram of the values in a portable graymap
pgmnorm.c normalize contrast in a portable graymap
pgmoil.c turn a portable graymap into an oil painting
pgmramp.c generate a grayscale ramp
pgmtexture.c calculate textural features on a portable graymap
libpgm[1-3].c a few utility routines
pgmmerge.c merge wrapper routine
pgm.h header file for libpgm
libpgm.h internal header file for libpgm
dithers.h useful include file
*.1 manual entries for all of the tools
pgm.5 manual entry for the pgm format
libpgm.3 manual entry for the pgm library
Files in ppm.shar?:
Makefile guess
Imakefile for X11-type installations
giftoppm.c convert GIF to portable pixmap
gouldtoppm.c convert Gould scanner file to portable pixmap
ilbmtoppm.c convert IFF ILBM to portable pixmap
imgtoppm.c convert Img-whatnot to portable pixmap
mtvtoppm.c convert MTV ray-tracer output to portable pixmap
pcxtoppm.c convert PC Paintbrush format to portable pixmap
pgmtoppm.c colorize a portable graymap into a portable pixmap
pi1toppm.c convert Atari Degas .pi1 to portable pixmap
picttoppm.c convert Macintosh PICT to portable pixmap
pjtoppm.c convert HP PaintJet file to portable pixmap
qrttoppm.c convert QRT ray-tracer output to portable pixmap
rawtoppm.c convert raw RGB bytes to portable pixmap
rgb3toppm.c combine three portable graymaps into one portable pixmap
sldtoppm.c convert an AutoCAD slide file into a portable pixmap
spctoppm.c convert Atari compressed Spectrum to portable pixmap
sputoppm.c convert Atari uncompressed Spectrum to portable pixmap
tgatoppm.c convert TrueVision Targa file to portable pixmap
ximtoppm.c convert Xim to portable pixmap
xpmtoppm.c convert XPM format to portable pixmap
yuvtoppm.c convert Abekas YUV format to portable pixmap
ppmtoacad.c convert portable pixmap to AutoCAD database or slide
ppmtogif.c convert portable pixmap to GIF
ppmtoicr.c convert portable pixmap to NCSA ICR graphics
ppmtoilbm.c convert portable pixmap to IFF ILBM
ppmtopcx.c convert portable pixmap to PC Paintbrush format
ppmtopgm.c convert portable pixmap to portable graymap
ppmtopi1.c convert portable pixmap to Atari Degas .pi1
ppmtopict.c convert portable pixmap to Macintosh PICT
ppmtopj.c convert portable pixmap to HP PaintJet file
ppmtopuzz.c convert portable pixmap to X11 "puzzle" file
ppmtorgb3.c separate a portable pixmap into three portable graymaps
ppmtosixel.c convert portable pixmap to DEC sixel format
ppmtotga.c convert portable pixmap to TrueVision Targa file
ppmtouil.c convert portable pixmap to Motif UIL icon file
ppmtoxpm.c convert portable pixmap to XPM format
ppmtoyuv.c convert portable pixmap to Abekas YUV format
ppmdither.c ordered dither for color images
ppmforge.c fractal forgeries of clouds, planets, and starry skies
ppmhist.c print a histogram of a portable pixmap
ppmmake.c create a pixmap of a specified size and color
ppmpat.c create a pretty pixmap
ppmquant.c quantize colors down to a specified number
ppmquantall script to run ppmquant on a set of pixmaps
ppmrelief.c run a Laplacian Relief filter on a portable pixmap
libppm[1-5].c a few utility routines
ppmmerge.c merge wrapper routine
ppm.h header file for libppm
ppmcmap.h header file for colormap routines in libppm
ppmdraw.h header file for simple drawing routines in libppm
libppm.h internal header file for libppm
autocad.h definitions for AutoCAD files
tga.h definitions for TrueVision Targa files
xim.h definitions for Xim files
*.1 manual entries for all of the tools
ppm.5 manual entry for the ppm format
libppm.3 manual entry for the ppm library
Files in pnm.shar?:
Makefile guess
Imakefile for X11-type installations
anytopnm script to attempt to convert any format to P?M
rasttopnm.c convert Sun raster file to portable anymap
tifftopnm.c convert TIFF file to portable anymap
xwdtopnm.c convert X10 or X11 window dump to portable anymap
pnmtops.c convert portable anymap to PostScript
pnmtorast.c convert portable anymap to Sun raster file
pnmtotiff.c convert portable anymap to TIFF file
pnmtoxwd.c convert portable anymap to X11 window dump
pnmarith.c perform arithmetic on two portable anymaps
pnmcat.c concatenate portable anymaps
pnmconvol.c general MxN convolution on a portable anymap
pnmcrop.c crop all like-colored borders off a portable anymap
pnmcut.c select a rectangular region from a portable anymap
pnmdepth.c change the maxval in a portable anymap
pnmenlarge.c enlarge a portable anymap N times
pnmfile.c describe a portable anymap
pnmflip.c perform one or more flip operations on a portable anymap
pnmgamma.c perform gamma correction on a portable anymap
pnmindex script to build a visual index of a bunch of anymaps
pnminvert.c invert a portable anymap
pnmmargin script to add a margin to a portable anymap
pnmnoraw.c force a portable anymap into ASCII format
pnmpaste.c paste a rectangle into a portable anymap
pnmrotate.c rotate a portable anymap
pnmscale.c scale a portable anymap
pnmshear.c shear a portable anymap
pnmsmooth script that uses pnmconvol to smooth a anymap
pnmtile.c replicate a portable anymap into a specified size
libpnm[1-4].c a few utility routines
pnmmerge.c merge wrapper routine
pnm.h header file for libpnm
rast.h definitions for Sun raster files
x10wd.h definitions for X10 window dumps
x11wd.h definitions for X11 window dumps
*.1 manual entries for all of the tools
pnm.5 manual entry for the pnm format
libpnm.3 manual entry for the pnm library
Additions to the PbmPlus package.
This enhanced version of the PbmPlus package supports reading of files
from three different confocal scanners, the Molecular Dynamics (Sarastro),
the Biorad and the Zeiss. The package can convert from any of these images
to the pbm format, from which it can produce gif, tiff, x11 dumps, mac paint,
etc. In order to convert from a confocal image format, use the following
commands:
* Molecular Dynamics (Sarastro) and Leica:
rawtopgm -tb [file] > outfile.pgm
For more information, give the command "man rawtopgm"
* Biorad
bioradtopgm [-image#] [file] > outfile.pgm
For more information, give the command "man bioradtopgm"
* Zeiss (old format)
zeisstopnm [-pgm|-ppm] [file] > outfile.pnm
For more information, give the command "man zeisstopnm"
* Zeiss (new format)
tifftopnm [file] > outfile.pnm
I have tested the programs on one Zeiss file (old format) and on one
Biorad file. There probably remain some bugs to be fixed. Please report
them to me when you encounter them (email:oliver@fysik4.kth.se).
I have compiled and installed the PbmPlus package on the following machines:
* Silicon graphics (Personal Iris) with gcc 2.4.0
* Sun386i with gcc 2.4.0
BUGS
The libtiff part can be tricky to compile. On an sgi I managed to use
gcc. On a sun386i, I had to compile tif_dir.c, tif_error.c and tif_warning.c
with cc instead. The rest of the files could be compiled with gcc.
On the sun386i, the pgmtexture.c file would not compile with gcc -O.
It worked fine without the optimization flag. Probably a bug in gcc.
From the README file:
COPYRIGHTS
All the software in this package, whether by me or by a contributer,
has a copyright similar to this one:
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, provided
that the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation. This software is provided "as is" without express or
implied warranty.
Many people get confused by this legalese, especially the part about
"without fee". Does this mean you can't charge for any product that
uses PBMPLUS? No. All it means is that you don't have to pay me.
You can do what you want with this software. Build it into your
package, steal code from it, whatever. Just be sure to let people
know where it came from.
NETPBM for NeXTSTEP
February 9, 1995
Enclosed is the original README for the NetPBM package. NetPBM compiles
without difficulty under NeXTSTEP. This is almost THE definitive
collection of image conversion software [plus a bunch of other
manipulation goodies]. I say almost because it does NOT include
JPEG-- but that is easily obtained from the site listed below and
compiles just fine under NeXTSTEP.
Someone really should wrap these filters into a filter service-- it
certainly seems that using small executables, such as these, as
filters is significantly faster than using a filter service that has
the conversion built in (but I have yet to do any empirical testing).
IF YOU DOWNLOADED THE SOURCE:
The installation target directories are /LocalDeveloper/netpbm/bin
and /LocalDeveloper/netpbm/man/man{1,3,5}. CFLAGS include "-arch i386 -arch
m68k -O2". If you need to change these attributes (or anything else
about the make process), see Makefile and libtiff/Makefile (which used
to be libtiff/Makefile.next).
I would strongly recommend not installing the netpbm binaries into an
existing bin directory -- there are *175* executables associated
with this package; unmerging all of these executables from an
existing bin directory would be tedious.
IF YOU DOWNLOADED THE BINARIES:
The archive is rooted on the directory "netpbm"; underneath that
directory, you will find bin, this readme, and man. Copy to wherever
you see fit.
For completeness, you should probably obtain the Indpendent JPEG
groups JPEG compression/decompression/manipulation package from:
ftp://ftp.uu.net/ftp://ftp.uu.net/graphics/jpeg
If you want binaries, bug me and I'll compile and submit something
similar to this to the archives.
b.bum * <bbum@friday.com>
---------------- original README follows ------------------------
N E T P B M
Release 7 December 1993
Netpbm is a toolkit for conversion of images between a variety of
different formats, as well as to allow a few basic image operations.
The package is intended to be portable to many platforms. It has been
tested under UNIX (BSD and SYSV, e.g. SGI, Sun4, Sun386i, DEC and
Apollo DN 3500), VMS and Amiga OS. There are also compiler directives
in it for MS-DOS.
You'll find the latest release of Netpbm at the following sites:
* wuarchive.wustl.edu (128.252.135.4),
directory /graphics/graphics/packages/NetPBM
* ikaros.fysik4.kth.se (130.237.35.2), directory /pub/netpbm.
* ftp.informatik.uni-oldenburg.de (134.106.1.9). This site also carries
binaries for the Amiga.
* peipa.essex.ac.uk (155.245.115.161), directory ipa/src/manip
* ftp.rahul.net (192.160.13.1), directory /pub/davidsen/source
* ftp.cs.ubc.ca, directory /ftp/archive/netpbm
You'll also find a mirror site at the BBS:
* sixhub.tmr.com, phone +1 518 3468033, in the "source" area.
Netpbm is based on the widely spread Pbmplus package (release: 10 Dec 91).
On top of that, a lot of improvements and additions have been made. After
the latest release of Pbmplus, a lot of additional filters have been
circulating on the net. The aim of Netpbm was, to collect these and to turn
them into a package. This work has been performed by a group of program-
mers all over the world. If *you* have some code to add, please contact us,
and we will incorporate it. There is a mailing list for discussions about
Netpbm. You post a message to the list by writing to "netpbm@fysik4.kth.se".
If you want to be on the list, send a mail with the message "subscribe netpbm"
to "majordomo@fysik4.kth.se". If you want to report a bug, please send
your report to netpbm@fysik4.kth.se, and to the author of Pbmplus,
jef@netcom.com.
Please note, that this is not an official Pbmplus release. The code in
this release is merely a collection of code from various sources around
the world. Not all of the new code parts follow the high standard of
programming of Pbmplus. We have tried to make the code portable to as
many systems as possible, but we haven't cleaned up all routines. We hope
that this release will help the many users of Pbmplus to upgrade their
code all in one piece, instead of having to hunt down different code
fragments at different sites around the world. We also hope, that our
effort will help the author of Pbmplus, Jef Poskanzer, to make a new
official release soon.
The file Netpbm lists all new featues and functions in netpbm.
Below this line follows the original README file from Pbmplus.
***************************************************************
Extended Portable Bitmap Toolkit
Distribution of 10dec91
Previous distribution 30oct91
PBMPLUS is a toolkit for converting various image formats to and from
portable formats, and therefore to and from each other. The idea is,
if you want to convert among N image formats, you only need 2*N
conversion filters, instead of the N^2 you would need if you wrote each
one separately.
In addition to the converters, the package includes some simple tools
for manipulating the portable formats.
The package is broken up into four parts. First is PBM, for bitmaps (1
bit per pixel). Then there is PGM, for grayscale images. Next is PPM,
for full-color images. Last, there is PNM, which does content-independent
manipulations on any of the three internal formats, and also handles
external formats that have multiple types.
The parts are upwards compatible: PGM reads both PGM and PBM files and
writes PGM; PPM reads all three and writes PPM; and PNM reads all three
and writes, usually, the same type as it read. Whenever PNM makes an
exception and "promotes" a file to a higher format, it lets you know.
INSTALLATION
Unpack the files.
If you have the TIFF library (./libtiff) and are going to use it, copy the
appropriate Makefile into place, read the comments in libtiff/README,
and edit libtiff/tiffconf.h or the Makefile to reflect your compiler and
options.
Decide whether you want to use Imakefiles or Makefiles. If you want
to use Makefiles:
Edit the top-level Makefile, find each line with the string
"CONFIGURE", and follow the directions for setting configuration
options.
Likewise edit pbmplus.h.
If you are using gnu make, you have to edit *all* the Makefiles
and remove all the imake stuff at the ends, otherwise gnu make
will overwrite the Makefiles.
Make.
When you're happy that things compiled ok, make install.
If you want to use Imakefiles:
Edit Pbmplus.tmpl, find each line with the string "CONFIGURE",
and follow the directions for setting configuration options.
Likewise edit pbmplus.h.
Save the original Makefiles, in case you later want to switch back
to using them.
The usual X11 sequence of xmkmf, make Makefiles, make depend, then
make should work. If you have the TIFF libraries, the second step
should be "make SUBDIRS='./pbm ./pgm ./ppm ./pnm' Makefiles".
When you're happy that things compiled ok, make install and
make install.man.
After installing the manual pages, you may want to create the "whatis"
file by doing a catman -w -M <directory>, or whatever the equivalent is
on your system.
SUPPORT
I've tested this stuff under SysV and BSD, on Sun 3's 4's and 386's and
Sequents and Vaxen and HPs, with cc and gcc. Nevertheless, I'm sure bugs
remain, and portability to systems like Amigas and IBM compatibles is
an interesting question. Feedback is welcome; send bug reports,
enhancements, etc. to this address:
jef@well.sf.ca.us
apple!well!jef
When sending bug reports, always include the output from running any
PBMPLUS program with the -version flag. Also include the type of
system you are on, what compiler you used, and whether you are using
Makefiles or Imakefiles. I try to respond to bug reports and enhancements
promptly; say, within a week.
Also, if there is a new format or feature you would like to have added
to the package, feel free to drop me a line. If it's a format, include
whatever documentation you have, and if possible a uuencoded sample.
My response time will depend on how busy I am, and how easy the job
looks. If you need it right away, or it's a complicated job, you might
consider paying me; lately, that's how a lot of work on the package has
gotten done.
Finally, if you have access to Usenet, there's a newsgroup called
alt.graphics.pixutils which is specifically for discussion of image
conversion and editing packages such as PBMPLUS. Posting stuff there
is even better than mailing it to me, since it lets other people help
out with the answers.
HOW TO FIND THE RIGHT CONVERTER
Some people get confused by all the different names. If you want to
convert a pbm file to a Sun raster file, is it pbmtorast, pgmtorast,
ppmtorast, or pnmtorast? In this case some of the confusion might be
because previous versions of the package did in fact have both
pbmtorast and ppmtorast. But mostly it's just too many different
things to hold in your short term memory. Fine, so don't even try to
remember what's what. That's what computers are for. Unix, at least
BSD Unix, has this great indexing feature on the "man" program. You
say "man -k <keyword>" and it gives you all the one-line descriptions
with that keyword in them. All the PBMPLUS man pages have nice useful
one-line descriptions, that mention all the relevant keywords. Try it,
you'll like it.
COPYRIGHTS
All the software in this package, whether by me or by a contributer,
has a copyright similar to this one:
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, provided
that the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation. This software is provided "as is" without express or
implied warranty.
Many people get confused by this legalese, especially the part about
"without fee". Does this mean you can't charge for any product that
uses PBMPLUS? No. All it means is that you don't have to pay me.
You can do what you want with this software. Build it into your
package, steal code from it, whatever. Just be sure to let people
know where it came from.
CONTENTS
Files in pbmplus.shar:
README this
CHANGES list of changes between the various versions of PBM
TODO list of things still to be done
FORMATS list of the formats supported
OTHER.SYSTEMS list of other free image-processing software
Makefile guess
Imakefile for X11-type installations
Imakefile.tiff for X11-type installations
Pbmplus.tmpl for X11-type installations
pbmplus.h header file for PBM, PGM, PPM, and PNM
compat.csh csh script for compatibility with old versions
compat.ksh ksh script for compatibility with old versions
magic additions for /etc/magic to recognize some image formats
Files in pbm.shar?:
Makefile guess
Imakefile for X11-type installations
atktopbm.c convert Andrew Toolkit raster object to portable bitmap
brushtopbm.c convert Xerox doodle brushes to portable bitmap
cmuwmtopbm.c convert CMU window manager format to portable bitmap
g3topbm.c convert Group 3 FAX to portable bitmap
icontopbm.c convert Sun icon to portable bitmap
gemtopbm.c convert GEM .img format to portable bitmap
macptopbm.c convert MacPaint to portable bitmap
mgrtopbm.c convert MGR format to portable bitmap
pi3topbm.c convert Atari Degas .pi3 to portable bitmap
xbmtopbm.c convert X10 or X11 bitmap to portable bitmap
ybmtopbm.c convert Bennet Yee "face" file into portable bitmap
pbmto10x.c convert portable bitmap to Gemini 10x printer graphics
pbmtoascii.c convert portable bitmap to ASCII graphic form
pbmtoatk.c convert portable bitmap to Andrew Toolkit raster object
pbmtobbnbg.c convert portable bitmap to BBN BitGraph graphics
pbmtocmuwm.c convert portable bitmap to CMU window manager format
pbmtoepson.c convert portable bitmap to Epson printer graphics
pbmtog3.c convert portable bitmap to Group 3 FAX
pbmtogem.c convert portable bitmap into GEM .img file
pbmtogo.c convert portable bitmap to GraphOn graphics
pbmtoicon.c convert portable bitmap to Sun icon
pbmtolj.c convert portable bitmap to HP LaserJet graphics
pbmtomacp.c convert portable bitmap to MacPaint
pbmtomgr.c convert portable bitmap to MGR format
pbmtopi3.c convert portable bitmap to Atari Degas .pi3
pbmtoplot.c convert portable bitmap into Unix plot(5) file
pbmtoptx.c convert portable bitmap to Printronix graphics
pbmtoxbm.c convert portable bitmap to X11 bitmap
pbmtox10bm.c convert portable bitmap to X10 bitmap
pbmtoybm.c convert portable bitmap into Bennet Yee "face" file
pbmtozinc.c convert portable bitmap to Zinc Interface Library icon
pbmlife.c apply Conway's rules of Life to a portable bitmap
pbmmake.c create a blank bitmap of a specified size
pbmmask.c create a mask bitmap from a regular bitmap
pbmreduce.c reduce a portable bitmap N times, using Floyd-Steinberg
pbmtext.c render text into a bitmap
pbmupc.c create a Universal Product Code bitmap
libpbm[1-5].c a few utility routines
pbmmerge.c merge wrapper routine
pbm.h header file for libpbm
pbmfont.h header file for font routines in libpbm
libpbm.h internal header file for libpbm
g3.h definitions for Group 3 FAX
macp.h definitions for MacPaint files
bitreverse.h useful include file
*.1 manual entries for all of the tools
pbm.5 manual entry for the pbm format
libpbm.3 manual entry for the pbm library
Files in pgm.shar?:
Makefile guess
Imakefile for X11-type installations
fitstopgm.c convert FITS format to portable graymap
fstopgm.c convert Usenix FaceSaver(tm) format to portable graymap
hipstopgm.c convert HIPS format to portable graymap
lispmtopgm.c convert a Lisp Machine bitmap file into pgm format
psidtopgm.c convert PostScript "image" data to portable graymap
rawtopgm.c convert raw grayscale bytes to portable graymap
pgmtofits.c convert portable graymap to FITS format
pgmtofs.c convert portable graymap to Usenix FaceSaver(tm) format
pgmtolispm.c convert a portable graymap into Lisp Machine format
pgmtopbm.c convert portable graymap to portable bitmap
pgmbentley.c Bentleyize a portable graymap
pgmcrater.c create cratered terrain by fractal forgery
pgmedge.c edge-detect a portable graymap
pgmenhance.c edge-enhance a portable graymap
pgmhist.c print a histogram of the values in a portable graymap
pgmnorm.c normalize contrast in a portable graymap
pgmoil.c turn a portable graymap into an oil painting
pgmramp.c generate a grayscale ramp
pgmtexture.c calculate textural features on a portable graymap
libpgm[1-3].c a few utility routines
pgmmerge.c merge wrapper routine
pgm.h header file for libpgm
libpgm.h internal header file for libpgm
dithers.h useful include file
*.1 manual entries for all of the tools
pgm.5 manual entry for the pgm format
libpgm.3 manual entry for the pgm library
Files in ppm.shar?:
Makefile guess
Imakefile for X11-type installations
giftoppm.c convert GIF to portable pixmap
gouldtoppm.c convert Gould scanner file to portable pixmap
ilbmtoppm.c convert IFF ILBM to portable pixmap
imgtoppm.c convert Img-whatnot to portable pixmap
mtvtoppm.c convert MTV ray-tracer output to portable pixmap
pcxtoppm.c convert PC Paintbrush format to portable pixmap
pgmtoppm.c colorize a portable graymap into a portable pixmap
pi1toppm.c convert Atari Degas .pi1 to portable pixmap
picttoppm.c convert Macintosh PICT to portable pixmap
pjtoppm.c convert HP PaintJet file to portable pixmap
qrttoppm.c convert QRT ray-tracer output to portable pixmap
rawtoppm.c convert raw RGB bytes to portable pixmap
rgb3toppm.c combine three portable graymaps into one portable pixmap
sldtoppm.c convert an AutoCAD slide file into a portable pixmap
spctoppm.c convert Atari compressed Spectrum to portable pixmap
sputoppm.c convert Atari uncompressed Spectrum to portable pixmap
tgatoppm.c convert TrueVision Targa file to portable pixmap
ximtoppm.c convert Xim to portable pixmap
xpmtoppm.c convert XPM format to portable pixmap
yuvtoppm.c convert Abekas YUV format to portable pixmap
ppmtoacad.c convert portable pixmap to AutoCAD database or slide
ppmtogif.c convert portable pixmap to GIF
ppmtoicr.c convert portable pixmap to NCSA ICR graphics
ppmtoilbm.c convert portable pixmap to IFF ILBM
ppmtopcx.c convert portable pixmap to PC Paintbrush format
ppmtopgm.c convert portable pixmap to portable graymap
ppmtopi1.c convert portable pixmap to Atari Degas .pi1
ppmtopict.c convert portable pixmap to Macintosh PICT
ppmtopj.c convert portable pixmap to HP PaintJet file
ppmtopuzz.c convert portable pixmap to X11 "puzzle" file
ppmtorgb3.c separate a portable pixmap into three portable graymaps
ppmtosixel.c convert portable pixmap to DEC sixel format
ppmtotga.c convert portable pixmap to TrueVision Targa file
ppmtouil.c convert portable pixmap to Motif UIL icon file
ppmtoxpm.c convert portable pixmap to XPM format
ppmtoyuv.c convert portable pixmap to Abekas YUV format
ppmdither.c ordered dither for color images
ppmforge.c fractal forgeries of clouds, planets, and starry skies
ppmhist.c print a histogram of a portable pixmap
ppmmake.c create a pixmap of a specified size and color
ppmpat.c create a pretty pixmap
ppmquant.c quantize colors down to a specified number
ppmquantall script to run ppmquant on a set of pixmaps
ppmrelief.c run a Laplacian Relief filter on a portable pixmap
libppm[1-5].c a few utility routines
ppmmerge.c merge wrapper routine
ppm.h header file for libppm
ppmcmap.h header file for colormap routines in libppm
ppmdraw.h header file for simple drawing routines in libppm
libppm.h internal header file for libppm
autocad.h definitions for AutoCAD files
tga.h definitions for TrueVision Targa files
xim.h definitions for Xim files
*.1 manual entries for all of the tools
ppm.5 manual entry for the ppm format
libppm.3 manual entry for the ppm library
Files in pnm.shar?:
Makefile guess
Imakefile for X11-type installations
anytopnm script to attempt to convert any format to P?M
rasttopnm.c convert Sun raster file to portable anymap
tifftopnm.c convert TIFF file to portable anymap
xwdtopnm.c convert X10 or X11 window dump to portable anymap
pnmtops.c convert portable anymap to PostScript
pnmtorast.c convert portable anymap to Sun raster file
pnmtotiff.c convert portable anymap to TIFF file
pnmtoxwd.c convert portable anymap to X11 window dump
pnmarith.c perform arithmetic on two portable anymaps
pnmcat.c concatenate portable anymaps
pnmconvol.c general MxN convolution on a portable anymap
pnmcrop.c crop all like-colored borders off a portable anymap
pnmcut.c select a rectangular region from a portable anymap
pnmdepth.c change the maxval in a portable anymap
pnmenlarge.c enlarge a portable anymap N times
pnmfile.c describe a portable anymap
pnmflip.c perform one or more flip operations on a portable anymap
pnmgamma.c perform gamma correction on a portable anymap
pnmindex script to build a visual index of a bunch of anymaps
pnminvert.c invert a portable anymap
pnmmargin script to add a margin to a portable anymap
pnmnoraw.c force a portable anymap into ASCII format
pnmpaste.c paste a rectangle into a portable anymap
pnmrotate.c rotate a portable anymap
pnmscale.c scale a portable anymap
pnmshear.c shear a portable anymap
pnmsmooth script that uses pnmconvol to smooth a anymap
pnmtile.c replicate a portable anymap into a specified size
libpnm[1-4].c a few utility routines
pnmmerge.c merge wrapper routine
pnm.h header file for libpnm
rast.h definitions for Sun raster files
x10wd.h definitions for X10 window dumps
x11wd.h definitions for X11 window dumps
*.1 manual entries for all of the tools
pnm.5 manual entry for the pnm format
libpnm.3 manual entry for the pnm library
25-FEB-1994
Hi VAX/VMS and future PBMplus users!!!
This version of Jef Poskanzer's PBMplus package is ready-made to
support the DEC VAX/VMS C environment. In an attempt to make it run
like the Unix environment, the programs have been modified to look
like they use the "piping" and "redirection" features of Unix and
MSDOS. In this way, the documentation and other people's comments
(i.e., USENET alt.graphics.pixutils discussions, etc.) will be the
same for all platforms.
This VMS implementation borrows heavily from the previous
PBMplus/VMS release by Rick Dyson for 10dec91 which in turn builds
on the work Terry Poot (tp@mccall.com) did for the 05feb91 general
release of PBMplus. Many thanks and credits go his direction. The
"piping/redirection" is attributed to Mark Pizzolato
(mark@infopiz.uucp). The creation of the shareable library is due
to work done by Dave Jones (JONESD@kcgl1.eng.ohio-state.edu).
Well, since you are reading this, I guess you have the PBMplus
kit and have broken it out into it's respective directories. At
this point you just have to start the build operation. In this
release of the PBMplus package the process is much easier than in
the past. There is no patching of the source code necessary and so
there is no extra "patch-build kit". This contains everything you
need to build the PBMplus package.
There is only one step to the preparation process and that is to
copy all the files from the [.VMS] sub-directory up one level into
the root [PBMplus] directory.
"MAKEFILE.MMS"
-------------
There are two methods of building the executables. The first
(and prefered) method uses DECs "makefile" utility, MMS, which uses
the "MAKEFILE.MMS" files. If you don't have MMS, skip to the
section labeled "MAKE_PBMPLUS.COM" below. If you are still with me,
just type "MMS /Description = Makefile.MMS" and follow the
directions outlined on the screen. Your most probable sequence will
be the something like the following:
$ MMS /Description = Makefile.MMS ALL
$ MMS /Description = Makefile.MMS INSTALL ! creates & loads [.Exe]
$ MMS /Description = Makefile.MMS HELP ! make PBMPLUS.HLB
$ MMS /Description = Makefile.MMS MANUAL ! will need LaTeX and tr2TeX...
$ MMS /Description = Makefile.MMS INSTALLMANUAL ! creates & loads [.TeX]
$ MMS /Description = Makefile.MMS CLEAN ! clean up all recoverable files
The available choices will be displayed if you don't say
anything, i.e.
$ MMS /Description = Makefile.MMS
"MAKE_PBMPLUS.COM"
------------------
The other method of building the package is to execute the
"MAKE_PBMPLUS.COM" command procedure. This was mostly created by
the "MMS BUILD_PROC" command. It is not as flexible as MMS, but
should get the job done. Look through the procedure and edit it as
you see fit. It builds and installs just about everything, so it
might be in your best interest to look through it and use your veto
powers to comment out the unneeded (or unavailable) parts. Be sure
to look and check what you have before executing the procedure.
"SETUP.COM"
-----------
I have provided two setup files with this distribution to
facilitate the day-to-day use of PBMplus. All you need to do is
execute the SETUP.COM command procedure and it will make all the
logical name and foreign symbol definitions. You should look
through SETUP.COM and read the comments about the rooted logical
names used. After all that, look through the TeX documentation or
the on-line help files to get an idea of how to start using PBMplus.
NOTE: An error in MMS will occur if you have used
SETUP.COM before using MMS. A logical name conflict or
something. Either logout and login to clear things out
or Deassign PBMplus_Root and PBMplus_Dir before using
MMS.
Manifest
--------
The following files are included with this VMS port of PBMplus.
The bare essential ones needed to complete the build are marked with
an astreisk (*):
[.VMS]MAKEFILE.MMS -- VMS MMS description file (i.e., "makefile")
for all of PBMplus
*[.VMS]MAKE_PBMPLUS.COM -- VMS command procedure produced by MMS to build
the PBMplus package for users without MMS
*[.VMS]MAKE_PBMPLUSSHR.COM -- VMS command procedure to build Shareable
link library of the four main PBMplus object
libraries; LIBPBM, LIBPGM, LIBPPM, & LIBPNM
[.VMS]SETUP.COM -- An initialization/definition command proc for
"everyday use" of PBMplus once it's built
[.VMS]ADD_LIST.COM -- Generic command procedure to add another
library to any VMS librarian list, (i.e.,
Hlp$Library_nn or Lnk$Library_nn)
[.VMS]PBMPLUS.HLP -- VMS Help library file for all of PBMplus
[.PBM]MAKEFILE.MMS -- VMS MMS description file for PBM routines
[.PGM]MAKEFILE.MMS -- VMS MMS description file for PGM routines
[.PPM]MAKEFILE.MMS -- VMS MMS description file for PPM routines
[.PNM]MAKEFILE.MMS -- VMS MMS description file for PNM routines
[.LIBTIFF]MAKEFILE.MMS -- VMS MMS description file for LIBTIFF routines
When it's all over and done, the PBMplus directory tree should
resemble the following:
PBMPLUS ---+ EXE <-- the binaries
|
+ LIBTIFF <-- TIFF library
|
+ PBM <-- Portable BitMaps
|
+ PGM <-- Portable Grayscale Maps
|
+ PNM <-- Portable aNy Maps
|
+ PPM <-- Portable Picture Maps
|
+ VMS <-- VMS specific files
Rick Dyson
--
Richard L. Dyson INTERNET: Dyson@IowaSP.Physics.UIowa.EDU
_ _ _____ Senior Programmer Analyst O: 319/335--1879
| | | | |_ _| Department of Physics & Astronomy H: 319/338--6117
| | | | of | | Van Allen Hall NSI/DECnet: IOWASP::DYSON
| \_/ | _| |_ University of Iowa or : 7231::DYSON
\___/ |_____| Iowa City, IA 52242-1479
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.