The X protocol provides for the transfer of images (two-dimensional arrays of pixel data) between a client program and a drawable. The format for image data can vary considerably. In order to present a uniform data representation for the manipulation of a variety of images, CLX defines a special image data type. Additional image subtypes -- image-xy and image-z -- allow for the representation of an image either as a sequence of bit planes or as an array of pixels. CLX includes functions for accessing image objects; for transferring image data between image objects, drawables, and files; and also for direct transfer of raw image data.