PICFILE(9.6) PICFILE(9.6) NAME picfile - raster graphic image format DESCRIPTION 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. TYPE=type 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. NCHAN=nchan The number of channels, default 1. Page 1 Plan 9 (printed 12/22/24) PICFILE(9.6) PICFILE(9.6) CHAN=channels 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. CMAP= (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]; red=cmap[pixel][0]; green=cmap[pixel][1]; blue=cmap[pixel][2]; EXAMPLES sed '/^$/q' image Print a header. A sample header follows. TYPE=dump WINDOW=0 0 512 512 NCHAN=1 CHAN=m RES=300 300 CMAP= 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 SEE ALSO bitmap(6) T. Duff, `The 10th Edition Raster Graphics System', UNIX Research System Papers, Tenth Edition Page 2 Plan 9 (printed 12/22/24)