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, such as
          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.

     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 256×3-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:

               uchar cmap[256][3];
               red = cmap[pixel][0];
               green = cmap[pixel][1];
               blue = cmap[pixel][2];

          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

          Tom Duff, ``Raster Graphics in Plan 9''