<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
<HTML>
<HEAD>
<TITLE>raw2gif</TITLE>
<link rev=made href=mailto:esr@snark.thyrsus.com>
</HEAD>
<BODY>
Go to <a href="index.html">index page</a>.

<CENTER><H1>raw2gif</H1></CENTER>

A program to convert RAW image data into GIF files.  Only one image can be
handled.  The RAW image file is assumed to hold one pixel color in one byte,
and therefore the file size must be Width times Height as specified by the
-s option below.<P>

<H1>Usage:</H1>

<pre>
raw2gif [-q] -s Width Height [-p ColorMapFile] [-h] RawFile
</pre>

If no RawFile is given, Raw2Gif will try to read RAW data from stdin.
The generated GIF File is dumped to stdout.<P>

<H1>Memory required:</H1>

Line.

<H1>Options:</H1>

<DL>
<DT> [-q]
<DD> Quiet mode.  Defaults off on MSDOS, on under UNIX.  Controls printout
   of running scan lines. Use -q- to invert.<P>

<DT> -s Width Height
<DD> the dimensions of the image MUST be specified in the
   command line.  The RAW image file size must be exactly Width times Height
   bytes (each byte is one pixel color).<P>

<DT> [-p ColorMapFile]
<DD> Color map to load for given RAW image.  This file has
   4 integers in line (ColorIndex Red Green Blue), and the ColorIndex is
   in order starting from 1. See GifClrMp, which can also use/create these
   bitmap files. If no color map is specified, uses the EGA 16 color pallete
   as default color map.<P>

<DT> [-h]
<DD> Print one line of command line help, similar to Usage above.<P>
</DL>

<H1>Author:</H1>

Gershon Elber

<HR>
<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
</BODY>
</HTML>
