ij.plugin
Class PGM_Reader

java.lang.Object
  extended by ij.ImagePlus
      extended by ij.plugin.PGM_Reader
All Implemented Interfaces:
Measurements, PlugIn, java.awt.image.ImageObserver

public class PGM_Reader
extends ImagePlus
implements PlugIn

This plugin opens PxM format images.

The portable graymap format is a lowest common denominator grayscale file format. The definition is as follows:

- A "magic number" for identifying the file type. A pgm file's magic number is the two characters "P2". - Whitespace (blanks, TABs, CRs, LFs). - A width, formatted as ASCII characters in decimal. - Whitespace. - A height, again in ASCII decimal. - Whitespace. - The maximum gray value, again in ASCII decimal. - Whitespace. - Width * height gray values, each in ASCII decimal, between 0 and the specified maximum value, separated by whi- tespace, starting at the top-left corner of the graymap, proceeding in normal English reading order. A value of 0 means black, and the maximum value means white. - Characters from a "#" to the next end-of-line are ignored (comments). - No line should be longer than 70 characters.

Here is an example of a small graymap in this format: P2 # feep.pgm 24 7 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0 0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0 0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

There is a PGM variant that stores the pixel data as raw bytes:

-The "magic number" is "P5" instead of "P2". -The gray values are stored as plain bytes, instead of ASCII decimal. -No whitespace is allowed in the grays section, and only a single character of whitespace (typically a newline) is allowed after the maxval. -The files are smaller and many times faster to read and write.

Kai Barthel Nov 16 2004: Extended to support PPM (portable pixmap) format images (24 bits only). -The "magic numbers" are "P6" (raw) "P3" (ASCII).

Ulf Dittmer April 2005: Extended to support PBM (bitmap) images (P1 and P4)

Jarek Sacha (jarek.at.ieee.org) December 2005: Extended PPM support to 48 bit color images.


Field Summary
 
Fields inherited from class ij.ImagePlus
changes, CLOSED, COLOR_256, COLOR_RGB, compositeImage, currentSlice, GRAY16, GRAY32, GRAY8, img, ip, locked, OPENED, pixelHeight, pixelWidth, roi, sCalibrated, unit, units, UPDATED, win
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Fields inherited from interface ij.measure.Measurements
AREA, AREA_FRACTION, CENTER_OF_MASS, CENTROID, CIRCULARITY, ELLIPSE, FERET, INTEGRATED_DENSITY, INVERT_Y, KURTOSIS, LABELS, LIMIT, MAX_STANDARDS, MEAN, MEDIAN, MIN_MAX, MODE, PERIMETER, RECT, SKEWNESS, SLICE, STD_DEV
 
Constructor Summary
PGM_Reader()
           
 
Method Summary
 ImageProcessor open16bitAsciiImage(java.io.StreamTokenizer tok, int width, int height)
           
 ImageProcessor open16bitRawImage(java.io.InputStream is, int width, int height)
           
 void openAsciiImage(java.io.StreamTokenizer tok, int size, byte[] pixels)
           
 ImageStack openFile(java.lang.String path)
           
 void openHeader(java.io.StreamTokenizer tok)
           
 void openRawImage(java.io.InputStream is, int size, byte[] pixels)
           
 void run(java.lang.String arg)
          This method is called when the plugin is loaded.
 
Methods inherited from class ij.ImagePlus
addImageListener, close, copy, copyScale, createEmptyStack, createImagePlus, createLut, createNewRoi, draw, draw, flush, getBitDepth, getCalibration, getCanvas, getClipboard, getCurrentSlice, getDimensions, getFileInfo, getGlobalCalibration, getHeight, getID, getImage, getImageStack, getImageStackSize, getLocalCalibration, getLocationAsString, getMask, getNChannels, getNFrames, getNSlices, getOriginalFileInfo, getPixel, getProcessor, getProperties, getProperty, getRoi, getShortTitle, getStack, getStackSize, getStartTime, getStatistics, getStatistics, getStatistics, getStatistics, getTitle, getType, getWidth, getWindow, hide, imageUpdate, isInvertedLut, isLocked, isProcessor, killProcessor, killRoi, killStack, lock, lockSilently, mouseMoved, notifyListeners, paste, removeImageListener, repaintWindow, resetClipboard, restoreRoi, revert, saveRoi, setActivated, setCalibration, setColor, setDimensions, setFileInfo, setGlobalCalibration, setIgnoreFlush, setImage, setProcessor, setProperty, setRoi, setRoi, setRoi, setSlice, setStack, setTitle, setType, setWindow, show, show, startTiming, toString, trimProcessor, unlock, updateAndDraw, updateAndRepaintWindow, updateImage, updateStatusbarValue
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PGM_Reader

public PGM_Reader()
Method Detail

run

public void run(java.lang.String arg)
Description copied from interface: PlugIn
This method is called when the plugin is loaded. 'arg', which may be blank, is the argument specified for this plugin in IJ_Props.txt.

Specified by:
run in interface PlugIn

openFile

public ImageStack openFile(java.lang.String path)
                    throws java.io.IOException
Throws:
java.io.IOException

openHeader

public void openHeader(java.io.StreamTokenizer tok)
                throws java.io.IOException
Throws:
java.io.IOException

openAsciiImage

public void openAsciiImage(java.io.StreamTokenizer tok,
                           int size,
                           byte[] pixels)
                    throws java.io.IOException
Throws:
java.io.IOException

openRawImage

public void openRawImage(java.io.InputStream is,
                         int size,
                         byte[] pixels)
                  throws java.io.IOException
Throws:
java.io.IOException

open16bitRawImage

public ImageProcessor open16bitRawImage(java.io.InputStream is,
                                        int width,
                                        int height)
                                 throws java.io.IOException
Throws:
java.io.IOException

open16bitAsciiImage

public ImageProcessor open16bitAsciiImage(java.io.StreamTokenizer tok,
                                          int width,
                                          int height)
                                   throws java.io.IOException
Throws:
java.io.IOException