{
    "mode": "man",
    "parameter": "giftopnm",
    "section": "",
    "url": "https://www.chedong.com/phpMan.php/man/giftopnm/json",
    "generated": "2026-10-05T05:42:57Z",
    "synopsis": "giftopnm  [--alphaout={alpha-filename,-}]  [-verbose]  [-comments] [-image={N,all}] [-repair]\n[-quitearly] [GIFfile]\nMinimum unique abbreviation of option is acceptable.  You may use double hyphens  instead  of\nsingle hyphen to denote options.  You may use white space in place of the equals sign to sep‐\narate an option name from its value.",
    "sections": {
        "NAME": {
            "content": "giftopnm - convert a GIF file into a PNM image\n\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "giftopnm  [--alphaout={alpha-filename,-}]  [-verbose]  [-comments] [-image={N,all}] [-repair]\n[-quitearly] [GIFfile]\n\nMinimum unique abbreviation of option is acceptable.  You may use double hyphens  instead  of\nsingle hyphen to denote options.  You may use white space in place of the equals sign to sep‐\narate an option name from its value.\n\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "This program is part of Netpbm(1).\n\nThis  is  a  graphics format converter from the GIF format to the PNM (i.e. PBM, PGM, or PPM)\nformat.\n\nIf the image contains only black and maximally bright white, the output is PBM.  If the image\ncontains more than those two colors, but only grays, the output is PGM.  If  the  image  con‐\ntains other colors, the output is PPM.\n\nA  GIF  image contains rectangular pixels.  They all have the same aspect ratio, but may not\nbe square (it's actually quite unusual for them not to be square, but it could happen).   The\npixels of a Netpbm image are always square.  Because of the engineering complexity to do oth‐\nerwise,  giftopnm  converts a GIF image to a Netpbm image pixel-for-pixel.  This means if the\nGIF pixels are not square, the Netpbm output image has the wrong aspect ratio.  In this case,\ngiftopnm issues an informational message telling you to run pamscale to correct the output.\n\n",
            "subsections": []
        },
        "OPTIONS": {
            "content": "In addition to the options common to all programs based on libnetpbm  (most  notably  -quiet,\nsee  Common Options ), giftopnm recognizes the following command line options:\n\n\n\n--alphaout=alpha-filename\ngiftopnm   creates  a  PBM file containing the transparency information from the input\nimage.  This transparency image is the same dimensions as the input  image,  and  each\npixel of the transparency image tells whether the corresponding pixel of the input im‐\nage  is transparent.  Black means transparent; white means opaque.  If you don't spec‐\nify --alphaout, giftopnm does not generate a transparency file, and if the input image\nhas a transparency channel, giftopnm simply discards it.\n\nIf you specify - as the filename, giftopnm writes the transparency output to  Standard\nOutput and discards the image.\n\nSee pamcomp(1) for one way to use the transparency output file.\n\n",
            "subsections": [
                {
                    "name": "-verbose",
                    "content": "Produce verbose output about the GIF file input.\n\n"
                },
                {
                    "name": "-comments",
                    "content": "With  this  option,  giftopnm issues messages showing the GIF comments (A GIF89 stream\ncan contain comments in comment extensions).\n\nBy default, giftopnm ignores comment extensions.\n\n\n"
                },
                {
                    "name": "-image=",
                    "content": "This option identifies which image from the GIF stream you want.  You can  select  ei‐\nther  one  image or all the images.  Select all the images with all.  Select one image\nby specifying its sequence number in the stream: 1, 2, 3, etc.\n\nThe default is just Image 1.\n\nA GIF stream normally contains only one image, so you don't  need  this  option.   But\nsome streams, including animated GIFs, have multiple images.\n\nWhen you select multiple GIF images, the output is a PNM stream with multiple images.\n\nIf  you  specify  a single image, giftopnm must read and partially validate the images\nbefore that in the stream.  It may or may not do the same for the images after it; see\n-quitearly.\n\nThe all value was added in Netpbm 10.16 (June 2003).   Earlier  giftopnm  can  extract\nonly one image.\n\n"
                },
                {
                    "name": "-repair",
                    "content": "This option makes giftopnm try to salvage what it can from an invalid GIF input.\n\nIn  particular,  when giftopnm detects that the GIF input is invalid so that it is im‐\npossible to determine what the pixels are intended to be, it produces a  single  arbi‐\ntrary  color  for  all further pixels in the image.  giftopnm processes the image from\ntop to bottom, left to right, so  this  means  the  bottommost  pixels  will  be  this\npadding.\n\ngiftopnm issues warning messages when it salvages an image in this way.\n\nWithout  this option, giftopnm fails when it detects invalid GIF input.  Any output it\nproduces is arbitrary, and typically is not a valid PNM image.\n\nIt is fairly common for an image to be corrupted such that is started off as  a  valid\nGIF, but had the end of the file cut off.  An interrupted network transfer tends to do\nthis.   In  this  case, giftopnm's salvage operation will produce a valid PNM image of\nthe proper dimensions, but with a single arbitrary color for the pixels that were left\nout of the file.\n\nThis option was new in Netpbm 10.38 (March 2007).  From 10.32 through 10.37,  giftopnm\nalways  fails  if it detects invalid GIF input.  Before 10.32, it succeeds in the case\nof a truncated image, and replaces the missing pixels with arbitrary colors, not  nec‐\nessarily all the same (The pre-10.32 behavior wasn't actually intended by the design).\n\n\n"
                },
                {
                    "name": "-quitearly",
                    "content": "This option makes giftopnm stop reading its input file as soon as it has converted and\noutput the images from the input that you requested.  By default, giftopnm reads until\nthe end of the GIF stream, ignoring any data after the images you requested.\n\nTwo reasons not to use this option:\n\n\n•      The input file is a pipe and the process that is filling that pipe expects the pipe to\ntake the entire stream and will fail or get stuck if it doesn't.\n\n\n•      You want to validate the entire GIF stream.\n\n\n\nTwo reasons to use this option:\n\n\n\n•      It saves the time and other resources to read the end of the stream.\n\n•      There are errors in the end of the stream that make giftopnm fail.\n\n\nThis option has no effect if you also specify -image=all\n\nThis option was new in Netpbm 10.35 (August 2006).  Before that, giftopnm always reads\nthe entire stream.\n\n\n\n"
                }
            ]
        },
        "RESTRICTIONS": {
            "content": "This  does  not  correctly handle the Plain Text Extension of the GIF89 standard, since I did\nnot have any example input files containing them.\n\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "pamtogif(1), ppmcolormask(1), pamcomp(1), http://www.lcdf.org/gifsicle , ppm(1).\n\n",
            "subsections": []
        },
        "AUTHOR": {
            "content": "Copyright (c) 1993 by David Koblas (koblas@netcom.com)\n\n",
            "subsections": []
        },
        "LICENSE": {
            "content": "As a historical note, for a long time if you used giftopnm, you were using a  patent  on  the\nLZW  compression  method which was owned by Unisys, and in all probability you did not have a\nlicense from Unisys to do so.  Unisys typically asked $5000 for a license for trivial use  of\nthe patent.  Unisys never enforced the patent against trivial users, and made statements that\nit  is  much  less  concerned  about people using the patent for decompression (which is what\ngiftopnm does than for compression.  The patent expired in 2003.\n\nRumor has it that IBM also owns a patent covering giftopnm.\n\nA replacement for the GIF format that has never required any patent license to use is the PNG\nformat.\n",
            "subsections": []
        },
        "DOCUMENT SOURCE": {
            "content": "This manual page was generated by the Netpbm tool 'makeman' from  HTML  source.   The  master\ndocumentation is at\n\nhttp://netpbm.sourceforge.net/doc/giftopnm.html\n\nnetpbm documentation                      13 September 2012                  Giftopnm User Manual(1)",
            "subsections": []
        }
    },
    "summary": "giftopnm - convert a GIF file into a PNM image",
    "flags": [
        {
            "flag": "",
            "long": null,
            "arg": null,
            "description": "Produce verbose output about the GIF file input."
        },
        {
            "flag": "",
            "long": null,
            "arg": null,
            "description": "With this option, giftopnm issues messages showing the GIF comments (A GIF89 stream can contain comments in comment extensions). By default, giftopnm ignores comment extensions."
        },
        {
            "flag": "",
            "long": null,
            "arg": null,
            "description": "This option identifies which image from the GIF stream you want. You can select ei‐ ther one image or all the images. Select all the images with all. Select one image by specifying its sequence number in the stream: 1, 2, 3, etc. The default is just Image 1. A GIF stream normally contains only one image, so you don't need this option. But some streams, including animated GIFs, have multiple images. When you select multiple GIF images, the output is a PNM stream with multiple images. If you specify a single image, giftopnm must read and partially validate the images before that in the stream. It may or may not do the same for the images after it; see -quitearly. The all value was added in Netpbm 10.16 (June 2003). Earlier giftopnm can extract only one image."
        },
        {
            "flag": "",
            "long": null,
            "arg": null,
            "description": "This option makes giftopnm try to salvage what it can from an invalid GIF input. In particular, when giftopnm detects that the GIF input is invalid so that it is im‐ possible to determine what the pixels are intended to be, it produces a single arbi‐ trary color for all further pixels in the image. giftopnm processes the image from top to bottom, left to right, so this means the bottommost pixels will be this padding. giftopnm issues warning messages when it salvages an image in this way. Without this option, giftopnm fails when it detects invalid GIF input. Any output it produces is arbitrary, and typically is not a valid PNM image. It is fairly common for an image to be corrupted such that is started off as a valid GIF, but had the end of the file cut off. An interrupted network transfer tends to do this. In this case, giftopnm's salvage operation will produce a valid PNM image of the proper dimensions, but with a single arbitrary color for the pixels that were left out of the file. This option was new in Netpbm 10.38 (March 2007). From 10.32 through 10.37, giftopnm always fails if it detects invalid GIF input. Before 10.32, it succeeds in the case of a truncated image, and replaces the missing pixels with arbitrary colors, not nec‐ essarily all the same (The pre-10.32 behavior wasn't actually intended by the design)."
        },
        {
            "flag": "",
            "long": null,
            "arg": null,
            "description": "This option makes giftopnm stop reading its input file as soon as it has converted and output the images from the input that you requested. By default, giftopnm reads until the end of the GIF stream, ignoring any data after the images you requested. Two reasons not to use this option: • The input file is a pipe and the process that is filling that pipe expects the pipe to take the entire stream and will fail or get stuck if it doesn't. • You want to validate the entire GIF stream. Two reasons to use this option: • It saves the time and other resources to read the end of the stream. • There are errors in the end of the stream that make giftopnm fail. This option has no effect if you also specify -image=all This option was new in Netpbm 10.35 (August 2006). Before that, giftopnm always reads the entire stream."
        }
    ],
    "examples": [],
    "see_also": [
        {
            "name": "pamtogif",
            "section": "1",
            "url": "https://www.chedong.com/phpMan.php/man/pamtogif/1/json"
        },
        {
            "name": "ppmcolormask",
            "section": "1",
            "url": "https://www.chedong.com/phpMan.php/man/ppmcolormask/1/json"
        },
        {
            "name": "pamcomp",
            "section": "1",
            "url": "https://www.chedong.com/phpMan.php/man/pamcomp/1/json"
        },
        {
            "name": "ppm",
            "section": "1",
            "url": "https://www.chedong.com/phpMan.php/man/ppm/1/json"
        }
    ],
    "tldr": {
        "source": "official",
        "description": "Convert a GIF file into a PNM image.",
        "examples": [
            {
                "description": "Convert a GIF image to a Netpbm image pixel-for-pixel",
                "command": "giftopnm {{path/to/input.gif}} > {{path/to/output.pnm}}"
            },
            {
                "description": "Display version",
                "command": "giftopnm {{-v|-version}}"
            }
        ]
    }
}