STANNIX Community


Manual: pamtogif

Pamtogif User Manual(1)				   General Commands Manual			     Pamtogif User Manual(1)

NAME
       pamtogif - convert a Netpbm image to a GIF image

SYNOPSIS
       pamtogif

       [-interlace]

       [-sort]

       [-mapfile=mapfile] [-transparent=[=]color]

       [-alphacolor=color]

       [-comment=text]

       [-noclear]

       [-nolzw]

       [-aspect=fraction]

       [-verbose] [netpbmfile]

       All  options can be abbreviated to their shortest unique prefix.	 You may use two hyphens instead of one to designate
       an option.  You may use either white space or an equals sign between an option name and its value.

DESCRIPTION
       This program is part of Netpbm(1).

       pamtogif reads a Netpbm image as input and produces a GIF file as output.

       This program creates only individual GIF images.	 To combine multiple GIF images into an animated GIF, use gifsicle
       (not part of the Netpbm package).

       pamtogif creates either an original GIF87 format GIF file or the
	 newer GIF89 format.  It creates GIF89 when the output needs to have features
	 that were new with GIF89, to wit transparency or comments.  Otherwise, it
	 creates GIF87.	 Really old GIF readers conceivably could not recognize
	 GIF89.	 The output needs to have transparency when either the input has a
	 transparency information or you specify the -transparent option.  It
	 needs to have comments when you specify the
	 -comment option.

       pamtogif	 generates  a GIF image with a single image block, which means the image cannot have more than 256 colors in
       it (it contains a single color map with a maximum size of 256).	If the image you want to  convert  has	more  colors
       than  that  (ppmhist  can  tell	you),  you can use pnmquant to reduce it to 256.  Or use the more complex but faster
       method described under the -mapfile option.

       If your input image is a PAM with transparency information, pamtogif uses one entry in the GIF colormap	specifically
       for  the transparent pixels, so you can have at most 255 opaque colors.	In contrast, if you use the -transparent op‐
       tion, one of the colors from the input becomes transparent, so the limit is still 256.

       pamtogif recognizes transparency information in the input by the
	 tuple type being RGB_ALPHA, GRAYSCALE_ALPHA, or
	 BLACKANDWHITE_ALPHA.  This is the case for any image that has
	 transparency information and was created by a Netpbm program that
	 manipulates visual images.  If, on the other hand, you have a PAM generated
	 some other way, but you know the planes have the same meaning as implied by
	 these tuple types, you can make pamtogif process the transparency
	 information by changing the tuple type accordingly before you pass it
	 to pamtogif.  You can use pamstack to change the tuple type.

       pamtogif was new in Netpbm 10.37 (December 2006).  In older Netpbm, use ppmtogif.

OPTIONS
       In addition to the options common to all programs based on libnetpbm (most notably  -quiet,  see	  Common Options  ),
       pamtogif recognizes the following command line options:

       -interlace
	      Produce an interlaced GIF file.

       -sort  Produce a GIF file with a color map sorted in a predictable order.

	      This  does not produce the sorted color map which is part of the GIF format.  That kind of sorted color map is
	      one where the colors are sorted according to how important they are, and the GIF header tells the viewer	that
	      it is sorted that way.  Its purpose is to allow the viewer to use fewer colors than are in the color map if it
	      is not capable of displaying all the colors.

	      What  this  option  produces is a color map sorted by red value, then green, then blue.  That can be useful in
	      analyzing GIF images, particularly those made with two versions of the program, because it removes some of the
	      variability.

       -mapfile=mapfile

	      Use the colors found in the file mapfile to create the colormap in the GIF file, instead of  the	colors	from
	      netpbmfile.   mapfile  can be any PPM file; all that matters is the colors in it.	 If the colors in netpbmfile
	      do not match those in mapfile, pamtogif matches them to a "best match." You can obtain a much better result by
	      using pnmremap to change the colors in the input to those in the map file.

	      The mapfile file is not a palette file, just an image whose colors you want to use.  The order  of  colors  in
	      the  GIF	palette have nothing to do with where they appear in the mapfile image, and duplication of colors in
	      the image is irrelevant.

	      The map file's depth must match the number of color components in the input (which is not necessarily the same
	      as the input's depth -- the input might have a transparency plane in addition).  If your map file does not, or
	      it might not, run your input through pnmremap using the same map file so that it does.

	      You can use -mapfile to speed up conversion of an image where you already have a map file because	 of  earlier
	      processing  of your image.  For example, it is common to start with an image that has more than 256 colors and
	      remap its colors to a set of 256 colors so that pamgtogif can convert it (a GIF can have only 256 colors; pam‐
	      togif without -mapfile fails on any image that has more than that) with pnmquant.	 When you do this,  pnmquant
	      generates	 a palette to do the color quantization, then pamtogif generates an identical palette from the quan‐
	      tized image.  You can save computation by generating the palette once:

		  $ pnmcolormap 256 myimage.ppm >/tmp/colormap.ppm
		  $ pamtogif myimage.ppm -mapfile=/tmp/colormap.ppm >output.gif

       -transparent=color
	      pamtogif marks the specified color as transparent in the GIF image.

	      If you don't specify -transparent, pamtogif does not mark any color transparent (except as  indicated  by	 the
	      transparency information in the input file).

	      Specify the color (color) as described for the argument of the pnm_parsecolor() library routine .

	      If  the color you specify is not present in the image, pamtogif selects instead the color in the image that is
	      closest to the one you specify.  Closeness is measured as a Cartesian distance between colors  in	 RGB  space.
	      If multiple colors are equidistant, pamtogif chooses one of them arbitrarily.

	      However,	if  you	 prefix	 your color specification with "=", e.g. -transparent==red, only the exact color you
	      specify will be transparent.  If that color does not appear in the image, there will be no transparency.	pam‐
	      togif issues an information message when this is the case.

	      When you specify -transparent, pamtogif ignores explicit transparency information (the "alpha channel") in the
	      input image.

       -alphacolor=color
	      This specifies the foreground color for transparent pixels.  A viewer may	 use  the  foreground  color  for  a
	      transparent pixel if it chooses not to have another color "show through.".  The default is black.

	      This  applies only to pixels that are transparent in the GIF because they are transparent in the Netpbm input.
	      If a GIF pixel is transparent because of the -transparent option, the foreground color is the color  indicated
	      by that option.

	      Note  that in GIF, all transparent pixels have the same foreground color.	 (There is only one entry in the GIF
	      colormap for transparent pixels).

	      Specify the color (color) as described for the argument of the pnm_parsecolor() library routine .

       -comment=text
	      Include a comment in the GIF output with comment text text.

	      Without this option, there are no comments in the output.

	      Note that in a command shell, you'll have to use quotation marks around text if it contains  characters  (e.g.
	      space) that would make the shell think it is multiple arguments:
	      $ pamtogif -comment "this is a comment" xxx.gif

       -noclear

	      This option causes the output not to contain any GIF clear codes.

	      In GIF, the stream defines codes that represent strings of pixels as it goes.  The stream contains definitions
	      of  codes	 mixed in with the references to those codes that describe the pixels of the image.  GIF specifies a
	      maximum number of codes that can be defined; when the stream has defined that many, the stream can either just
	      use those for the rest of the image or include a clear code, deleting all the string codes so that the  stream
	      can start over defining new ones.

	      By  far the most common choice is the clear code.	 This usually results in a smaller stream because the set of
	      strings of pixels that occur in an image vary over the parts of the image.  Hardly any  GIF  encoders  produce
	      streams that don't use the clear code.

	      But  it  is  conceivable that a stream could be smaller without the use of the clear code because it saves the
	      stream having to redefine the same string codes over and over.  It could	even  avoid  a	thrashing  situation
	      where the stream continually defines a set of strings that never get used again before the maximum is reached.

	      The default is to use the clear codes.

	      This option was new in Netpbm 10.82 (March 2018).	 Before that, the program aways uses the clear codes.

       -nolzw

	      This option is mainly of historical interest -- it involves use of a patent that is now expired.

	      This  option  causes the GIF output, and thus pamtogif, not to use LZW (Lempel-Ziv) compression.	As a result,
	      the image file is larger and, before the patent expired, no royalties would be  owed  to	the  holder  of	 the
	      patent on LZW.  See the section LICENSE below.

	      LZW  is  a  method for combining the information from multiple pixels into a single GIF code.  With the -nolzw
	      option, pamtogif creates one GIF code per pixel, so it is not doing any compression and not using	 LZW.	How‐
	      ever,  any  GIF  decoder,	 whether it uses an LZW decompressor or not, will correctly decode this uncompressed
	      format.  An LZW decompressor would see this as a particular case of LZW compression.

	      Note that if someone uses an LZW decompressor such as the one in giftopnm or pretty much any graphics  display
	      program to process the output of pamtogif -nolzw , he is then using the LZW patent.  But the patent holder ex‐
	      pressed far less interest in enforcing the patent on decoding than on encoding.

       -aspect=fraction
	      This is the aspect ratio of the pixels of the image.  Its only effect is to record that information in the GIF
	      for  use	by  whatever interprets the GIF.  Note that this feature of GIF is hardly ever used and most GIF de‐
	      coders ignore this information and assume pixels are square.

	      Pixels in a Netpbm image do not have aspect ratios; there is always a one-one correspondence between GIF	pix‐
	      els and Netpbm pixels.

	      The  aspect  ratio  is the quotient of width divided by height.  GIF allows aspect ratios from 0.25 (1:4) to 4
	      (4:1) in increments of 1/64.  pamtogif implements a natural extension of GIF that allows an aspect ratio up to
	      4 14/64.	If you specify anything outside this range, pamtogif fails.  pamtogif rounds fraction to the nearest
	      1/64.

	      The default is square (1.0).

	      This option was new in Netpbm 10.38 (March 2007).	 Before that, the pixels are always square.

       -verbose
	      This option causes pamtogif to display information about the conversion process and the image it produces.

SEE ALSO
       giftopnm(1), pnmremap(1), ppmtogif(1),

       gifsicle http://www.lcdf.org/gifsicle , pnm(1), pam(1).

HISTORY
       pamtogif was new in Netpbm 10.37 (December 2006).  It replaced ppmtogif, which created GIF images for  Pbmplus/Netpbm
       users since 1989.

       The  main  outward  change in the conversion from ppmtogif to pamtogif was that pamtogif was able to use transparency
       information ("alpha channel") in PAM input, whereas with ppmtogif, one had to supply the transparency mask in a sepa‐
       rate pseudo-PGM image (via the -alpha option).

       Jef Poskanzer wrote ppmtogif in 1989, and it has always been a cornerstone of Pbmplus/Netpbm because GIF	 is  such  a
       popular image format.  Jef based the LZW encoding on GIFENCOD by David Rowley .  Jef in‐
       cluded  GIFENCOD's GIFCOMPR.C file pretty much whole.  Rowley, in turn, adapted the LZW compression code from classic
       Unix compress, which used techniques described in IEEE Computer, June 1984.

       Jef's ppmtogif notably lacked the ability to use a transparency mask with it.  You could create transparent pixels in
       a GIF, but only with the -transparent option, which allowed one to specify that all pixels of a certain color in	 the
       input  were to be transparent.  Bryan Henderson added the -alpha option in July 2001 so you could supply a mask image
       that indicates exactly which pixels are to be transparent, and those pixels could have the same color as other opaque
       ones.

       Bryan Henderson added another significant piece of code and function in October 2001: the ability to generate  a	 GIF
       without	using the LZW patent -- an uncompressed GIF.  This was very important to many people at the time because the
       GIF patent was still in force, and this allowed them to make an image that any GIF  viewer  could  display,  royalty-
       free.  Bryan adapted code from the Independent JPEG Group's djpeg for that.

       There  is  no  code  in	pamtogif from Jef's original, but Jef may still hold copyright over it because of the way in
       which it evolved.  Virtually all of the code in pamtogif was written by Bryan Henderson and contributed to the public
       domain.

LICENSE
       If you use pamtogif without the -nolzw option, you are using a patent on the LZW compression method which is owned by
       Unisys.	The patent has expired (in 2003 in the US and in 2004 elsewhere), so it doesn't matter.	  While	 the  patent
       was  in	force,	most  people  who  used pamtogif and similar programs did so without a license from Unisys to do so.
       Unisys typically asked $5000 for a license for trivial use of the patent.  Unisys never enforced the  patent  against
       trivial users.

       Rumor has it that IBM also owns or owned a patent covering pamtogif.

       A replacement for the GIF format that never required any patents to use is the PNG format.

DOCUMENT SOURCE
       This manual page was generated by the Netpbm tool 'makeman' from HTML source.  The master documentation is at

	      http://netpbm.sourceforge.net/doc/pamtogif.html

netpbm documentation					09 June 2021				     Pamtogif User Manual(1)