{
    "content": [
        {
            "type": "text",
            "text": "# djpeg(1) (man)\n\n**Summary:** djpeg - decompress a JPEG file to an image file\n\n**Synopsis:** djpeg [ options ] [ filename ]\n\n## Flags\n\n| Flag | Long | Arg | Description |\n|------|------|-----|-------------|\n| — | — | — | Reduce image to at most N colors. This reduces the number of colors used in the out‐ put image, so that it can be displa |\n| — | — | — | Same as -colors. -colors is the recommended name, -quantize is provided only for backwards compatibility. |\n| — | — | — | tions are chosen for highest quality output.) Currently, this is equivalent to -dct fast -nosmooth -onepass -dither orde |\n| — | — | — | Force grayscale output even if JPEG file is color. Useful for viewing on monochrome displays; also, djpeg runs noticeabl |\n| — | — | — |  |\n| — | — | — | Scale the output image by a factor M/N. Currently the scale factor must be M/8, where M is an integer between 1 and 16 i |\n| — | — | — | -colors or -grayscale is specified, or if the JPEG file is grayscale; otherwise, 24-bit full-color format is emitted. |\n| — | — | — | colors, -colors 256 is assumed (unless you specify a smaller number of colors). If you specify -fast, the default number |\n| — | — | — | colors, -colors 256 is assumed (unless you specify a smaller number of colors). If you specify -fast, the default number |\n| — | — | — | -colors or -grayscale is specified, or if the JPEG file is grayscale; otherwise, 24-bit full-color format is emitted. |\n| — | — | — | if the JPEG file is grayscale or if -grayscale is specified; otherwise PPM is emitted. |\n| — | — | — | or if -grayscale is specified; otherwise, colormapped format is emitted if -colors is specified; otherwise, 24-bit full- |\n| — | — | — | Use accurate integer DCT method (default). |\n| — | — | — | Use less accurate integer DCT method [legacy feature]. When the Independent JPEG Group's software was first released in  |\n| — | — | — | Use floating-point DCT method [legacy feature]. The float method does not produce significantly more accurate results th |\n| — | — | — | Use Floyd-Steinberg dithering in color quantization. |\n| — | — | — | Use ordered dithering in color quantization. |\n| — | — | — | Do not use dithering in color quantization. By default, Floyd-Steinberg dithering is applied when quantizing colors; thi |\n| — | — | — | Extract ICC color management profile to the specified file. |\n| — | — | — | Quantize to the colors used in the specified image file. This is useful for producing multiple files with identical colo |\n| — | — | — | Use a faster, lower-quality upsampling routine. |\n| — | — | — | Use one-pass instead of two-pass color quantization. The one-pass method is faster and needs less memory, but it produce |\n| — | — | — | Set limit for amount of memory to use in processing large images. Value is in thou‐ sands of bytes, or millions of bytes |\n| — | — | — | Abort if the JPEG image contains more than N scans. This feature demonstrates a method by which applications can guard a |\n| — | — | — | Send output image to the named file, not to standard output. |\n| — | — | — | Load input file into memory before decompressing. This feature was implemented mainly as a way of testing the in-memory  |\n| — | — | — | Report decompression progress. |\n| — | — | — | Decompress all rows of the JPEG image except those between Y0 and Y1 (inclusive.) Note that if decompression scaling is  |\n| — | — | — | Decompress only a rectangular subregion of the image, starting at point X,Y with width W and height H. If necessary, X w |\n| — | — | — | Treat all warnings as fatal. This feature also demonstrates a method by which appli‐ cations can guard against attacks i |\n| — | — | — | Enable debug printout. More -v's give more output. Also, version information is printed at startup. |\n| — | — | — |  |\n| — | — | — | Print version information and exit. |\n\n## Examples\n\n- `This  example  decompresses  the JPEG file foo.jpg, quantizes it to 256 colors, and saves the`\n- `output in 8-bit BMP format in foo.bmp:`\n- `djpeg -colors 256 -bmp foo.jpg > foo.bmp`\n\n## See Also\n\n- cjpeg(1)\n- jpegtran(1)\n- rdjpgcom(1)\n- wrjpgcom(1)\n- ppm(5)\n- pgm(5)\n\n## Section Outline\n\n- **NAME** (2 lines)\n- **SYNOPSIS** (2 lines)\n- **DESCRIPTION** (4 lines)\n- **OPTIONS** (7 lines) — 33 subsections\n  - -colors (5 lines)\n  - -quantize (3 lines)\n  - -fast (3 lines)\n  - -grayscale (3 lines)\n  - -rgb (1 lines)\n  - -scale (5 lines)\n  - -bmp (3 lines)\n  - -gif (3 lines)\n  - -gif0 (3 lines)\n  - -os2 (3 lines)\n  - -pnm (2 lines)\n  - -targa (5 lines)\n  - -dct int (2 lines)\n  - -dct fast (21 lines)\n  - -dct float (6 lines)\n  - -dither fs (2 lines)\n  - -dither ordered (2 lines)\n  - -dither none (6 lines)\n  - -icc (2 lines)\n  - -map (5 lines)\n  - -nosmooth (2 lines)\n  - -onepass (5 lines)\n  - -maxmemory (4 lines)\n  - -maxscans (9 lines)\n  - -outfile (2 lines)\n  - -memsrc (3 lines)\n  - -report (2 lines)\n  - -skip (4 lines)\n  - -crop (7 lines)\n  - -strict (5 lines)\n  - -verbose (3 lines)\n  - -debug -verbose (1 lines)\n  - -version (2 lines)\n- **EXAMPLES** (5 lines)\n- **HINTS** (1 lines) — 2 subsections\n  - -scale (3 lines)\n  - -dct -nosmooth (4 lines)\n- **ENVIRONMENT** (6 lines)\n- **SEE ALSO** (5 lines)\n- **AUTHOR** (9 lines)\n\n## Full Content\n\n### NAME\n\ndjpeg - decompress a JPEG file to an image file\n\n### SYNOPSIS\n\ndjpeg [ options ] [ filename ]\n\n### DESCRIPTION\n\ndjpeg  decompresses  the named JPEG file, or the standard input if no file is named, and pro‐\nduces an image file on the standard output.  PBMPLUS (PPM/PGM), BMP,  GIF,  or  Targa  output\nformat can be selected.\n\n### OPTIONS\n\nAll  switch  names  may  be abbreviated; for example, -grayscale may be written -gray or -gr.\nMost of the \"basic\" switches can be abbreviated to as little as one letter.  Upper and  lower\ncase  are  equivalent  (thus  -BMP is the same as -bmp).  British spellings are also accepted\n(e.g., -greyscale), though for brevity these are not mentioned below.\n\nThe basic switches are:\n\n#### -colors\n\nReduce image to at most N colors.  This reduces the number of colors used in the  out‐\nput  image,  so  that it can be displayed on a colormapped display or stored in a col‐\normapped file format.  For example, if you have an 8-bit display, you'd need to reduce\nto 256 or fewer colors.\n\n#### -quantize\n\nSame  as  -colors.   -colors  is  the recommended name, -quantize is provided only for\nbackwards compatibility.\n\n#### -fast\n\ntions  are  chosen for highest quality output.)  Currently, this is equivalent to -dct\nfast -nosmooth -onepass -dither ordered.\n\n#### -grayscale\n\nForce grayscale output even if JPEG file is color.  Useful for viewing  on  monochrome\ndisplays; also, djpeg runs noticeably faster in this mode.\n\n#### -rgb\n\n#### -scale\n\nScale the output image by a factor M/N.  Currently the scale factor must be M/8, where\nM is an integer between 1 and 16 inclusive, or any reduced fraction thereof  (such  as\n1/2, 3/4, etc.)  Scaling is handy if the image is larger than your screen; also, djpeg\nruns much faster when scaling down the output.\n\n#### -bmp\n\n-colors  or  -grayscale  is  specified,  or  if the JPEG file is grayscale; otherwise,\n24-bit full-color format is emitted.\n\n#### -gif\n\ncolors,  -colors  256  is assumed (unless you specify a smaller number of colors).  If\nyou specify -fast, the default number of colors is 216.\n\n#### -gif0\n\ncolors,  -colors  256  is assumed (unless you specify a smaller number of colors).  If\nyou specify -fast, the default number of colors is 216.\n\n#### -os2\n\n-colors  or  -grayscale  is  specified,  or  if the JPEG file is grayscale; otherwise,\n24-bit full-color format is emitted.\n\n#### -pnm\n\nif the JPEG file is grayscale or if -grayscale is specified; otherwise PPM is emitted.\n\n#### -targa\n\nor if -grayscale is specified; otherwise, colormapped format is emitted if -colors  is\nspecified; otherwise, 24-bit full-color format is emitted.\n\nSwitches for advanced users:\n\n#### -dct int\n\nUse accurate integer DCT method (default).\n\n#### -dct fast\n\nUse  less  accurate  integer  DCT  method [legacy feature].  When the Independent JPEG\nGroup's software was first released in 1991, the decompression time for a  1-megapixel\nJPEG image on a mainstream PC was measured in minutes.  Thus, the fast integer DCT al‐\ngorithm provided noticeable performance benefits.  On  modern  CPUs  running  libjpeg-\nturbo,  however,  the  decompression  time for a 1-megapixel JPEG image is measured in\nmilliseconds, and thus the performance benefits of the fast algorithm  are  much  less\nnoticeable.   On  modern  x86/x86-64 CPUs that support AVX2 instructions, the fast and\nint methods have similar performance.  On other types of CPUs, the fast method is gen‐\nerally about 5-15% faster than the int method.\n\nIf  the  JPEG  image  was  compressed using a quality level of 85 or below, then there\nshould be little or no perceptible quality  difference  between  the  two  algorithms.\nWhen decompressing images that were compressed using quality levels above 85, however,\nthe difference between the fast and int methods becomes more pronounced.  With  images\ncompressed  using  quality=97,  for instance, the fast method incurs generally about a\n4-6 dB loss in PSNR relative to the int method, but this can be larger  for  some  im‐\nages.   If you can avoid it, do not use the fast method when decompressing images that\nwere compressed using quality levels above 97.  The algorithm  often  degenerates  for\nsuch  images and can actually produce a more lossy output image than if the JPEG image\nhad been compressed using lower quality levels.\n\n#### -dct float\n\nUse floating-point DCT method [legacy feature].  The float  method  does  not  produce\nsignificantly  more  accurate results than the int method, and it is much slower.  The\nfloat method may also give different results on  different  machines  due  to  varying\nroundoff behavior, whereas the integer methods should give the same results on all ma‐\nchines.\n\n#### -dither fs\n\nUse Floyd-Steinberg dithering in color quantization.\n\n#### -dither ordered\n\nUse ordered dithering in color quantization.\n\n#### -dither none\n\nDo not use dithering in color quantization.  By default, Floyd-Steinberg dithering  is\napplied  when  quantizing  colors; this is slow but usually produces the best results.\nOrdered dither is a compromise between speed and quality; no  dithering  is  fast  but\nusually  looks  awful.  Note that these switches have no effect unless color quantiza‐\ntion is being done.  Ordered dither is only available in -onepass mode.\n\n#### -icc\n\nExtract ICC color management profile to the specified file.\n\n#### -map\n\nQuantize to the colors used in the specified image file.  This is useful for producing\nmultiple files with identical color maps, or for forcing a predefined set of colors to\nbe used.  The file must be a GIF or  PPM  file.  This  option  overrides  -colors  and\n-onepass.\n\n#### -nosmooth\n\nUse a faster, lower-quality upsampling routine.\n\n#### -onepass\n\nUse  one-pass  instead  of two-pass color quantization.  The one-pass method is faster\nand needs less memory, but it produces a lower-quality image.  -onepass is ignored un‐\nless  you  also say -colors N.  Also, the one-pass method is always used for grayscale\noutput (the two-pass method is no improvement then).\n\n#### -maxmemory\n\nSet limit for amount of memory to use in processing large images.  Value is  in  thou‐\nsands  of  bytes, or millions of bytes if \"M\" is attached to the number.  For example,\n-max 4m selects 4000000 bytes.  If more space is needed, an error will occur.\n\n#### -maxscans\n\nAbort if the JPEG image contains more than  N  scans.   This  feature  demonstrates  a\nmethod by which applications can guard against denial-of-service attacks instigated by\nspecially-crafted malformed JPEG images containing numerous scans with  missing  image\ndata or image data consisting only of \"EOB runs\" (a feature of progressive JPEG images\nthat allows potentially hundreds of thousands of adjoining  zero-value  pixels  to  be\nrepresented using only a few bytes.)  Attempting to decompress such malformed JPEG im‐\nages can cause excessive CPU activity, since the decompressor must fully process  each\nscan (even if the scan is corrupt) before it can proceed to the next scan.\n\n#### -outfile\n\nSend output image to the named file, not to standard output.\n\n#### -memsrc\n\nLoad input file into memory before decompressing.  This feature was implemented mainly\nas a way of testing the in-memory source manager (jpegmemsrc().)\n\n#### -report\n\nReport decompression progress.\n\n#### -skip\n\nDecompress all rows of the JPEG image except those  between  Y0  and  Y1  (inclusive.)\nNote  that  if decompression scaling is being used, then Y0 and Y1 are relative to the\nscaled image dimensions.\n\n#### -crop\n\nDecompress only a rectangular subregion of the image, starting at point X,Y with width\nW  and  height  H.  If necessary, X will be shifted left to the nearest iMCU boundary,\nand the width will be increased accordingly.  Note that if  decompression  scaling  is\nbeing  used,  then  X,  Y, W, and H are relative to the scaled image dimensions.  Cur‐\nrently this option only works with the PBMPLUS (PPM/PGM), GIF, and Targa  output  for‐\nmats.\n\n#### -strict\n\nTreat  all warnings as fatal.  This feature also demonstrates a method by which appli‐\ncations can guard against attacks instigated by specially-crafted malformed  JPEG  im‐\nages.   Enabling  this  option  will cause the decompressor to abort if the JPEG image\ncontains incomplete or corrupt image data.\n\n#### -verbose\n\nEnable debug printout.  More -v's give more  output.   Also,  version  information  is\nprinted at startup.\n\n#### -debug -verbose\n\n#### -version\n\nPrint version information and exit.\n\n### EXAMPLES\n\nThis  example  decompresses  the JPEG file foo.jpg, quantizes it to 256 colors, and saves the\noutput in 8-bit BMP format in foo.bmp:\n\ndjpeg -colors 256 -bmp foo.jpg > foo.bmp\n\n### HINTS\n\nTo get a quick preview of an image, use the -grayscale and/or  -scale  switches.   -grayscale\n\n#### -scale\n\nSeveral options are available that trade off image quality to gain speed.  -fast turns on the\nrecommended settings.\n\n#### -dct -nosmooth\n\ncolor-quantized  image,  -onepass -dither ordered is fast but much lower quality than the de‐\nfault behavior.  -dither none may give acceptable results in two-pass  mode,  but  is  seldom\ntolerable in one-pass mode.\n\n### ENVIRONMENT\n\nJPEGMEM\nIf this environment variable is set, its value is the default memory limit.  The value\nis specified as described for the -maxmemory switch.  JPEGMEM  overrides  the  default\nvalue specified when the program was compiled, and itself is overridden by an explicit\n-maxmemory.\n\n### SEE ALSO\n\ncjpeg(1), jpegtran(1), rdjpgcom(1), wrjpgcom(1)\nppm(5), pgm(5)\nWallace, Gregory K.  \"The JPEG Still Picture Compression  Standard\",  Communications  of  the\nACM, April 1991 (vol. 34, no. 4), pp. 30-44.\n\n### AUTHOR\n\nIndependent JPEG Group\n\nThis  file  was modified by The libjpeg-turbo Project to include only information relevant to\nlibjpeg-turbo, to wordsmith certain sections, and to describe features not  present  in  lib‐\njpeg.\n\n\n\n4 November 2020                                  DJPEG(1)\n\n"
        }
    ],
    "structuredContent": {
        "command": "djpeg",
        "section": "1",
        "mode": "man",
        "summary": "djpeg - decompress a JPEG file to an image file",
        "synopsis": "djpeg [ options ] [ filename ]",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Reduce image to at most N colors. This reduces the number of colors used in the out‐ put image, so that it can be displayed on a colormapped display or stored in a col‐ ormapped file format. For example, if you have an 8-bit display, you'd need to reduce to 256 or fewer colors."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Same as -colors. -colors is the recommended name, -quantize is provided only for backwards compatibility."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "tions are chosen for highest quality output.) Currently, this is equivalent to -dct fast -nosmooth -onepass -dither ordered."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Force grayscale output even if JPEG file is color. Useful for viewing on monochrome displays; also, djpeg runs noticeably faster in this mode."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": ""
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Scale the output image by a factor M/N. Currently the scale factor must be M/8, where M is an integer between 1 and 16 inclusive, or any reduced fraction thereof (such as 1/2, 3/4, etc.) Scaling is handy if the image is larger than your screen; also, djpeg runs much faster when scaling down the output."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "-colors or -grayscale is specified, or if the JPEG file is grayscale; otherwise, 24-bit full-color format is emitted."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "colors, -colors 256 is assumed (unless you specify a smaller number of colors). If you specify -fast, the default number of colors is 216."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "colors, -colors 256 is assumed (unless you specify a smaller number of colors). If you specify -fast, the default number of colors is 216."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "-colors or -grayscale is specified, or if the JPEG file is grayscale; otherwise, 24-bit full-color format is emitted."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "if the JPEG file is grayscale or if -grayscale is specified; otherwise PPM is emitted."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "or if -grayscale is specified; otherwise, colormapped format is emitted if -colors is specified; otherwise, 24-bit full-color format is emitted. Switches for advanced users:"
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Use accurate integer DCT method (default)."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Use less accurate integer DCT method [legacy feature]. When the Independent JPEG Group's software was first released in 1991, the decompression time for a 1-megapixel JPEG image on a mainstream PC was measured in minutes. Thus, the fast integer DCT al‐ gorithm provided noticeable performance benefits. On modern CPUs running libjpeg- turbo, however, the decompression time for a 1-megapixel JPEG image is measured in milliseconds, and thus the performance benefits of the fast algorithm are much less noticeable. On modern x86/x86-64 CPUs that support AVX2 instructions, the fast and int methods have similar performance. On other types of CPUs, the fast method is gen‐ erally about 5-15% faster than the int method. If the JPEG image was compressed using a quality level of 85 or below, then there should be little or no perceptible quality difference between the two algorithms. When decompressing images that were compressed using quality levels above 85, however, the difference between the fast and int methods becomes more pronounced. With images compressed using quality=97, for instance, the fast method incurs generally about a 4-6 dB loss in PSNR relative to the int method, but this can be larger for some im‐ ages. If you can avoid it, do not use the fast method when decompressing images that were compressed using quality levels above 97. The algorithm often degenerates for such images and can actually produce a more lossy output image than if the JPEG image had been compressed using lower quality levels."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Use floating-point DCT method [legacy feature]. The float method does not produce significantly more accurate results than the int method, and it is much slower. The float method may also give different results on different machines due to varying roundoff behavior, whereas the integer methods should give the same results on all ma‐ chines."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Use Floyd-Steinberg dithering in color quantization."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Use ordered dithering in color quantization."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Do not use dithering in color quantization. By default, Floyd-Steinberg dithering is applied when quantizing colors; this is slow but usually produces the best results. Ordered dither is a compromise between speed and quality; no dithering is fast but usually looks awful. Note that these switches have no effect unless color quantiza‐ tion is being done. Ordered dither is only available in -onepass mode."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Extract ICC color management profile to the specified file."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Quantize to the colors used in the specified image file. This is useful for producing multiple files with identical color maps, or for forcing a predefined set of colors to be used. The file must be a GIF or PPM file. This option overrides -colors and -onepass."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Use a faster, lower-quality upsampling routine."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Use one-pass instead of two-pass color quantization. The one-pass method is faster and needs less memory, but it produces a lower-quality image. -onepass is ignored un‐ less you also say -colors N. Also, the one-pass method is always used for grayscale output (the two-pass method is no improvement then)."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Set limit for amount of memory to use in processing large images. Value is in thou‐ sands of bytes, or millions of bytes if \"M\" is attached to the number. For example, -max 4m selects 4000000 bytes. If more space is needed, an error will occur."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Abort if the JPEG image contains more than N scans. This feature demonstrates a method by which applications can guard against denial-of-service attacks instigated by specially-crafted malformed JPEG images containing numerous scans with missing image data or image data consisting only of \"EOB runs\" (a feature of progressive JPEG images that allows potentially hundreds of thousands of adjoining zero-value pixels to be represented using only a few bytes.) Attempting to decompress such malformed JPEG im‐ ages can cause excessive CPU activity, since the decompressor must fully process each scan (even if the scan is corrupt) before it can proceed to the next scan."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Send output image to the named file, not to standard output."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Load input file into memory before decompressing. This feature was implemented mainly as a way of testing the in-memory source manager (jpegmemsrc().)"
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Report decompression progress."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Decompress all rows of the JPEG image except those between Y0 and Y1 (inclusive.) Note that if decompression scaling is being used, then Y0 and Y1 are relative to the scaled image dimensions."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Decompress only a rectangular subregion of the image, starting at point X,Y with width W and height H. If necessary, X will be shifted left to the nearest iMCU boundary, and the width will be increased accordingly. Note that if decompression scaling is being used, then X, Y, W, and H are relative to the scaled image dimensions. Cur‐ rently this option only works with the PBMPLUS (PPM/PGM), GIF, and Targa output for‐ mats."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Treat all warnings as fatal. This feature also demonstrates a method by which appli‐ cations can guard against attacks instigated by specially-crafted malformed JPEG im‐ ages. Enabling this option will cause the decompressor to abort if the JPEG image contains incomplete or corrupt image data."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Enable debug printout. More -v's give more output. Also, version information is printed at startup."
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": ""
            },
            {
                "flag": "",
                "long": null,
                "arg": null,
                "description": "Print version information and exit."
            }
        ],
        "examples": [
            "This  example  decompresses  the JPEG file foo.jpg, quantizes it to 256 colors, and saves the",
            "output in 8-bit BMP format in foo.bmp:",
            "djpeg -colors 256 -bmp foo.jpg > foo.bmp"
        ],
        "see_also": [
            {
                "name": "cjpeg",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/cjpeg/1/json"
            },
            {
                "name": "jpegtran",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/jpegtran/1/json"
            },
            {
                "name": "rdjpgcom",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/rdjpgcom/1/json"
            },
            {
                "name": "wrjpgcom",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/wrjpgcom/1/json"
            },
            {
                "name": "ppm",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/ppm/5/json"
            },
            {
                "name": "pgm",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/pgm/5/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 4,
                "subsections": []
            },
            {
                "name": "OPTIONS",
                "lines": 7,
                "subsections": [
                    {
                        "name": "-colors",
                        "lines": 5
                    },
                    {
                        "name": "-quantize",
                        "lines": 3
                    },
                    {
                        "name": "-fast",
                        "lines": 3
                    },
                    {
                        "name": "-grayscale",
                        "lines": 3
                    },
                    {
                        "name": "-rgb",
                        "lines": 1
                    },
                    {
                        "name": "-scale",
                        "lines": 5
                    },
                    {
                        "name": "-bmp",
                        "lines": 3
                    },
                    {
                        "name": "-gif",
                        "lines": 3
                    },
                    {
                        "name": "-gif0",
                        "lines": 3
                    },
                    {
                        "name": "-os2",
                        "lines": 3
                    },
                    {
                        "name": "-pnm",
                        "lines": 2
                    },
                    {
                        "name": "-targa",
                        "lines": 5
                    },
                    {
                        "name": "-dct int",
                        "lines": 2
                    },
                    {
                        "name": "-dct fast",
                        "lines": 21
                    },
                    {
                        "name": "-dct float",
                        "lines": 6
                    },
                    {
                        "name": "-dither fs",
                        "lines": 2
                    },
                    {
                        "name": "-dither ordered",
                        "lines": 2
                    },
                    {
                        "name": "-dither none",
                        "lines": 6
                    },
                    {
                        "name": "-icc",
                        "lines": 2
                    },
                    {
                        "name": "-map",
                        "lines": 5
                    },
                    {
                        "name": "-nosmooth",
                        "lines": 2
                    },
                    {
                        "name": "-onepass",
                        "lines": 5
                    },
                    {
                        "name": "-maxmemory",
                        "lines": 4
                    },
                    {
                        "name": "-maxscans",
                        "lines": 9
                    },
                    {
                        "name": "-outfile",
                        "lines": 2
                    },
                    {
                        "name": "-memsrc",
                        "lines": 3
                    },
                    {
                        "name": "-report",
                        "lines": 2
                    },
                    {
                        "name": "-skip",
                        "lines": 4
                    },
                    {
                        "name": "-crop",
                        "lines": 7
                    },
                    {
                        "name": "-strict",
                        "lines": 5
                    },
                    {
                        "name": "-verbose",
                        "lines": 3
                    },
                    {
                        "name": "-debug -verbose",
                        "lines": 1
                    },
                    {
                        "name": "-version",
                        "lines": 2
                    }
                ]
            },
            {
                "name": "EXAMPLES",
                "lines": 5,
                "subsections": []
            },
            {
                "name": "HINTS",
                "lines": 1,
                "subsections": [
                    {
                        "name": "-scale",
                        "lines": 3
                    },
                    {
                        "name": "-dct -nosmooth",
                        "lines": 4
                    }
                ]
            },
            {
                "name": "ENVIRONMENT",
                "lines": 6,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 5,
                "subsections": []
            },
            {
                "name": "AUTHOR",
                "lines": 9,
                "subsections": []
            }
        ]
    }
}