PICFILE(9.6)                                         PICFILE(9.6)

          picfile - raster graphic image format

          Files in this format store images represented as two-
          dimensional arrays of multiple-channel pixels.  A picfile
          consists of an textual header followed by binary data encod-
          ing the pixels in row-major order.  The header is a list of
          attribute/value pairs separated by newlines, terminated by
          an empty line.  Each header line has the form name=value.
          The name may not contain an ASCII NUL, newline or `='; the
          value may not contain NUL or newline.  The last line of a
          header is empty.

          The standard attributes are described below; all but TYPE
          and WINDOW are optional.  TYPE must come first; otherwise
          order is irrelevant.  As any unrecognized attribute is
          passed over uninterpreted by all standard software, applica-
          tions are welcome to include arbitrary annotations, like
          SHOESIZE=10, if they wish.

               How the pixels are encoded.  Standard types are
               runcode  A run-length encoding.  The data are a
                        sequence of (nchan+1)-byte records each con-
                        taining a count k and nchan bytes giving a
                        pixel value to be repeated k+1 times.  A run
                        may not span scanlines.
               dump     A two-dimensional array of nchan-byte records
                        in row major order.
               bitmap   One-bit pixels, packed into bytes high bit
                        leftmost.  Zero bits are white, one bits are
                        black.  Rows are padded with zeros to a multi-
                        ple of 16 bits.
               ccitt-g4 A black-and-white image under CCITT FAX Group
                        4 compression.  This format is highly compres-
                        sive on images of text and line art.  Simi-
                        larly, `ccitt-g31' and `ccitt-g32' for Group
                        3, 1-D and 2-D.
               pico     A sequence of nchan two-dimensional arrays of
                        single bytes.
               ccir601  Pixels are in dump order, 2 bytes per pixel
                        encoded according to the IEEE digital compo-
                        nent video standard.
          WINDOW=x0 y0 x1 y1
               The x,y coordinates of the upper left corner and the
               point just diagonally outside the lower right corner, x
               increasing to the right, y down.
               The number of channels, default 1.

     Page 1                       Plan 9             (printed 10/1/20)

     PICFILE(9.6)                                         PICFILE(9.6)

               The names of the channels.  Channels should be nchan
               characters long.  Certain substrings of channels are
               conventionally understood by most programs that read
               and write picture files: m is a monochrome image chan-
               nel, rgb is a full-color image, a is an alpha channel,
               and z... is a floating point (four-byte, single preci-
               sion) z value.  Some very old monochrome pictures have
               CHAN=r.  This usage is deprecated but still recognized
               by some programs.
          RES=x y
               The digitizing resolution horizontally and vertically,
               in pixels/inch.

               (The value is empty.)  A color map, a 256x3-byte trans-
               lation table for color values, follows the header.  In
               a full-color picture, each color-map row maps pixel
               values of the corresponding channel.  In a monochrome
               picture, pixel values index the color map to yield red,
               green and blue, like this:

               unsigned char cmap[256][3];

          sed '/^$/q' image
               Print a header.  A sample header follows.

          WINDOW=0 0 512 512
          RES=300 300
          COMMAND= antiquantize 'halftone CLASSIC' 512.halftone LIBERTY.anticlassic
          COMMAND=  halftone CLASSIC 512.liberty 512.halftone 1.75 512.halftone
          COMMAND=   transpose IN OUT
          COMMAND=    resample 512 IN OUT
          COMMAND=     transpose IN OUT
          COMMAND=      resample 512 IN OUT
          COMMAND=       clip 400 400 LIBERTY OUT

          T. Duff, `The 10th Edition Raster Graphics System', UNIX
          Research System Papers, Tenth Edition

     Page 2                       Plan 9             (printed 10/1/20)