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/15/25)
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/15/25)