Module ij
Package ij.plugin

Class PGM_Reader

  • All Implemented Interfaces:
    Measurements, PlugIn, java.awt.image.ImageObserver, java.lang.Cloneable

    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.

    • 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