home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 2: PC
/
frozenfish_august_1995.bin
/
bbs
/
d03xx
/
d0334.lha
/
FBM
/
Features
< prev
next >
Wrap
Text File
|
1990-03-21
|
5KB
|
142 lines
************************************************************************
* Announcing the "Fuzzy PixMap" (or FBM) image manipulation library *
************************************************************************
Current version 0.9
The FBM library is now available in Beta test form to interested
parties. This package allows manipulation and conversion of a variety
of color and black-and-white image formats.
Philosophy
Each program can read any of the understood formats, and
can write any of the understood formats that make sense for
the image data.
Programs are designed around specific image operations (sizing,
scaling, retoning, halftoning, quantizing, etc.), rather than
simply converting from one format to another. For example,
converting a 4bit color GIF file to a 1bit Sun rasterfile
takes the following operations:
read GIF format
map color values to grayscale
adjust aspect ratio (1.2 --> 1.0)
scale image up to be visible (320x200 --> 640x480 or 1152x864)
optionally sharpen the image (edge enhancement)
optionally clean up "snow" in image (flip isolated pixels)
halftone (Blue noise, Floyd-Steinberg, Jarvis, Threshhold)
write Sun rasterfile format.
So there equivalent pipeline of fbm routines would be:
clr2gray < foo.gif | fbnorm | fbext [ args ] | fbhalf [args] > foo.1bit
That way you have maximum control over the resulting image size
and quality.
Inputs the following file formats
o Sun rasterfiles (1, 8, or 24 bits, color or grayscale)
o GIF files (1 to 8 bits, color or grayscale)
o Amiga IFF files (except HAM mode)
o PCX files
o PBM bitmaps
o Face files (CMU format for 1bit files by Bennet Yee)
o FBM files (my own format)
(automatically determines input format, and uncompresses
files compressed using 'compress')
Outputs the following formats
o Sun rasterfiles
o FBM files
o GIF files (mapped color only)
o Amiga IFF files (except HAM mode)
o PBM (1bit files only)
o Face format (1bit files only)
With input converter for
o raw images (like Amiga Digi-View files)
With output converters for
o PostScript (1bit or 8bit grayscale files only)
o Diablo graphics (1bit files only)
Operations
o Extract rectangle (optionally resizing and changing aspect ratio)
o Change density and contrast (color and grayscale)
o Rotate 90, 180, or 270 degrees
o Quantize 24 bit RGB images to 8..256 colors
Modified Heckbert median cut
o Halftone grayscale using
Ulichney's Blue Noise dithering
Floyd-Steinberg dithering
Jarvis's Constrained averaging
Threshholding
o Edge Sharpening by Digitial Laplacian (color or grayscale)
o Convert color to grayscale (or compute "gray" colormap
so grayscale images can be viewed on frame buffers)
o Compute histograms of grayscale images
o Sample 1bit images to convert to grayscale
Status
Beta test release, 0.9. "Use at your own risk, bug fixes not
guaranteed, be happy with minimal documentation." Bugs reported
so far have been fixed.
Freely available for use, redistribution, incorporation into
other code. Just don't make a profit off it or take my name
off of it.
Written in C for BSD and Mach Unix Systems.
Tested on Vaxes, Sun Workstations, IBM RTs and Pyramids.
Self contained. Does not require Sun include files or library
routines to manipulate Sun rasters.
Availability
Anonymous FTP
Host: nl.cs.cmu.edu (128.2.222.56)
User: anonymous
Password: name@site
Directory: /usr/mlm/ftp/
Filename: fbm.tar.Z
Transfer: 'image'
Note: you must 'cd' to /usr/mlm/ftp directly, you cannot access
either /usr, or /usr/mlm alone. Don't forget to specify 'image'
format transfer.
Will be posted to UseNet when the code is stable and
the documentation is complete and accurate.
Acknowledgements
GIF read support written by David Koblas.
GIF write support written by David Rowley.
Some IFF code by Jerry Morrison and Steve Shaw of Electronic Arts.
Edge detection and pixel cleaning by Gary Sherwin and Michael Mauldin
Rumours
Future support is rumoured for TIFF files and MacPaint files. Also it
may someday be able to write all of the formats that it can read.
All that is needed to incorporate a new format is to write a routine
that reads the given image into memory and one that writes it out
again. I will incorporate other code on a "whenever I'm not working
on my thesis" basis.
Michael L. Mauldin (Fuzzy) School of Computer Science
ARPA: Michael.Mauldin@NL.CS.CMU.EDU Carnegie Mellon University
Phone: (412) 268-3065 Pittsburgh, PA 15213-3890