| \section{\module{jpeg} --- | 
 |          Read and write JPEG files} | 
 |  | 
 | \declaremodule{builtin}{jpeg} | 
 |   \platform{IRIX} | 
 | \modulesynopsis{Read and write image files in compressed JPEG format.} | 
 |  | 
 |  | 
 | The module \module{jpeg} provides access to the jpeg compressor and | 
 | decompressor written by the Independent JPEG Group | 
 | \index{Independent JPEG Group}(IJG). JPEG is a standard for | 
 | compressing pictures; it is defined in ISO 10918.  For details on JPEG | 
 | or the Independent JPEG Group software refer to the JPEG standard or | 
 | the documentation provided with the software. | 
 |  | 
 | A portable interface to JPEG image files is available with the Python | 
 | Imaging Library (PIL) by Fredrik Lundh.  Information on PIL is | 
 | available at \url{http://www.pythonware.com/products/pil/}. | 
 | \index{Python Imaging Library} | 
 | \index{PIL (the Python Imaging Library)} | 
 | \index{Lundh, Fredrik} | 
 |  | 
 | The \module{jpeg} module defines an exception and some functions. | 
 |  | 
 | \begin{excdesc}{error} | 
 | Exception raised by \function{compress()} and \function{decompress()} | 
 | in case of errors. | 
 | \end{excdesc} | 
 |  | 
 | \begin{funcdesc}{compress}{data, w, h, b} | 
 | Treat data as a pixmap of width \var{w} and height \var{h}, with | 
 | \var{b} bytes per pixel.  The data is in SGI GL order, so the first | 
 | pixel is in the lower-left corner. This means that \function{gl.lrectread()} | 
 | return data can immediately be passed to \function{compress()}. | 
 | Currently only 1 byte and 4 byte pixels are allowed, the former being | 
 | treated as greyscale and the latter as RGB color. | 
 | \function{compress()} returns a string that contains the compressed | 
 | picture, in JFIF\index{JFIF} format. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{decompress}{data} | 
 | Data is a string containing a picture in JFIF\index{JFIF} format. It | 
 | returns a tuple \code{(\var{data}, \var{width}, \var{height}, | 
 | \var{bytesperpixel})}.  Again, the data is suitable to pass to | 
 | \function{gl.lrectwrite()}. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{setoption}{name, value} | 
 | Set various options.  Subsequent \function{compress()} and | 
 | \function{decompress()} calls will use these options.  The following | 
 | options are available: | 
 |  | 
 | \begin{tableii}{l|p{3in}}{code}{Option}{Effect} | 
 |   \lineii{'forcegray'}{% | 
 |     Force output to be grayscale, even if input is RGB.} | 
 |   \lineii{'quality'}{% | 
 |     Set the quality of the compressed image to a value between | 
 |     \code{0} and \code{100} (default is \code{75}).  This only affects | 
 |     compression.} | 
 |   \lineii{'optimize'}{% | 
 |     Perform Huffman table optimization.  Takes longer, but results in | 
 |     smaller compressed image.  This only affects compression.} | 
 |   \lineii{'smooth'}{% | 
 |     Perform inter-block smoothing on uncompressed image.  Only useful | 
 |     for low-quality images.  This only affects decompression.} | 
 | \end{tableii} | 
 | \end{funcdesc} | 
 |  | 
 |  | 
 | \begin{seealso} | 
 |   \seetitle{JPEG Still Image Data Compression Standard}{The  | 
 |             canonical reference for the JPEG image format, by | 
 |             Pennebaker and Mitchell.} | 
 |  | 
 |   \seetitle[http://www.w3.org/Graphics/JPEG/itu-t81.pdf]{Information | 
 |             Technology - Digital Compression and Coding of | 
 |             Continuous-tone Still Images - Requirements and | 
 |             Guidelines}{The ISO standard for JPEG is also published as | 
 |             ITU T.81.  This is available online in PDF form.} | 
 | \end{seealso} |