\section{Built-in Module \sectcode{rgbimg}}
\bimodindex{rgbimg}

The rgbimg module allows python programs to access SGI imglib image
files (also known as \file{.rgb} files).  The module is far from
complete, but is provided anyway since the functionality that there is
is enough in some cases.  Currently, colormap files are not supported.

The module defines the following variables and functions:

\renewcommand{\indexsubitem}{(in module rgbimg)}
\begin{excdesc}{error}
This exception is raised on all errors, such as unsupported file type, etc.
\end{excdesc}

\begin{funcdesc}{sizeofimage}{file}
This function returns a tuple \code{(\var{x}, \var{y})} where
\var{x} and \var{y} are the size of the image in pixels.
Only 4 byte RGBA pixels, 3 byte RGB pixels, and 1 byte greyscale pixels
are currently supported.
\end{funcdesc}

\begin{funcdesc}{longimagedata}{file}
This function reads and decodes the image on the specified file, and
returns it as a Python string. The string has 4 byte RGBA pixels.
The bottom left pixel is the first in
the string. This format is suitable to pass to \code{gl.lrectwrite},
for instance.
\end{funcdesc}

\begin{funcdesc}{longstoimage}{data\, x\, y\, z\, file}
This function writes the RGBA data in \var{data} to image
file \var{file}. \var{x} and \var{y} give the size of the image.
\var{z} is 1 if the saved image should be 1 byte greyscale, 3 if the
saved image should be 3 byte RGB data, or 4 if the saved images should
be 4 byte RGBA data.  The input data always contains 4 bytes per pixel.
These are the formats returned by \code{gl.lrectread}.
\end{funcdesc}

\begin{funcdesc}{ttob}{flag}
This function sets a global flag which defines whether the scan lines
of the image are read or written from bottom to top (flag is zero,
compatible with SGI GL) or from top to bottom(flag is one,
compatible with X)\@.  The default is zero.
\end{funcdesc}
