Provided by: pngcrush_1.8.13-0.1_amd64 bug


       pngcrush — optimizes (or modifies) PNG (Portable Network Graphics) files.


       pngcrush [options]  [infile.png]  [outfile.png]

       pngcrush -e ext [options]  [file1.png]  [file2.png] ...

       pngcrush -d dir [options]  [file1.png]  [file2.png] ...


       pngcrush  is  an optimizer for PNG (Portable Network Graphics) files.  Its main purpose is
       to reduce the size of the file's IDAT chunk (or stream).  pngcrush can  also  be  used  to
       modify  a  PNG's ancillary chunks (example: transparency information or textual comments).
       Some familiarity with the PNG (pronounced 'ping')  format  may  be  helpful  to  users  of
       pngcrush.  pngcrush has reasonable defaults so running with no options may produce smaller
       files.  This document briefly describes the  PNG  format  where  necessary  to  understand
       pngcrush.  For complete documentation, see :


       The  actual  pixel  data of a PNG is contained in one or many IDAT chunks. To make an IDAT
       chunk PNG encoders take the raw pixel data, filter it with one of 5 different filters (See
       Section  "Filter  Types"  )  then  compress it.  pngcrush reduces the size of PNG files by
       choosing a different filter or compression methods from those  used  in  the  input  file.
       pngcrush  tries multiple filter/compression methods and compares the size of the resulting
       IDAT chunk.  The filter/compression method with the smallest IDAT chunk is chosen for  the
       output  file.   The filter and compression levels pngcrush tries are controlled by command
       line options.  All of the filter methods and compression levels are  lossless;  they  will
       not reduce image quality.

       In  addition  to  reducing  the  size of a PNG file, pngcrush can modify ancillary chunks.
       Ancillary chunks are optional information including transparency  (tRNS),  gamma  (gAMMA),
       standard  RGB  color space conformance (sRGB) or textual information (iTXt, tEXt or zTXt).
       See the associated command line options for details on manipulating these chunks.


       -already size
                 If file has an IDAT chunk greater than the integer size, it will  be  considered
                 to be already crushed and will not be processed further.

       -bit_depth n
                 Force  output  bit  depth  to  n.  See  Section  "Color  Types"  for  bit  depth

       -bkgd r g b
                 Specify the default background color for the image.  Some PNG viewers  will  use
                 this background when displaying the image. Background is specified by r, g and b
                 integers between 0 and (2^bitdepth)-1. For output color type 0 and 4 (gray,  see
                 section  "Color  Types"  )  the  green  index  is  used as the gray level of the

       -brute    Use brute force, try 114 different  filter/compression  methods  [11-124].  This
                 option  is  very  time-consuming  and generally not worthwhile. You can restrict
                 this option to certain  filter  types,  compression  levels,  or  strategies  by
                 following it with -f filter,  -l level, or -z strategy. For example:

                           pngcrush -brute -f 0 infile.png

                 Will try only methods that use filter type 0.

       -c type   Set  the  output  image  color type to type, one of [0, 2, 4, or 6] (see section
                 "Color Types" ).  Future versions of pngcrush will also allow color type  3,  if
                 there  are  256  or fewer colors present in the input file.  Color types 4 and 6
                 are padded with an opaque alpha channel if the input file does  not  have  alpha
                 information.  You  can  use  0 or 4 to convert color to grayscale. Use 0 or 2 to
                 delete an unwanted alpha channel. Default is to use same color type as the input

       -d dir    Specify  a  directory  for all output files. All output files will have the same
                 name as their respective input files.

       -dou      Double the images gamma.  This is used for fixing gamma  in  PhotoShop  5.0c5.02
                 files.  It has been claimed that the PS5 bug is actually more complex than that,
                 in some unspecified way.

       -e ext    Specify a new extension ext for all output files.

       -exit     Forces pngcrush to call exit() rather than return() when it is finished.  It  is
                 unclear to this writer why this option exists.

       -f filter Specify filter (see section "Filter Types" ) to use with the method specified in
                 the preceding -m or -brute option.  Valid filter types are [0-4] : use specified
                 filter, [5]: use adaptive filtering.

       -fix      Fix  otherwise  fatal  conditions  such  as bad CRCs. The CRC (Cyclic Redundancy
                 Check) is present in every chunk and can alert the decoder of corrupt data.

       -force    Write a new output file even if larger than input. Otherwise the input file will
                 be  copied  to  output  if  it  is  smaller than any generated file and no chunk
                 additions, removals, or changes were requested.

       -g gamma  Value to insert in gAMA chunk, only if the input file has  no  gAMA  chunk.   To
                 replace  an  existing  gAMA chunk, use the -replace_gamma option.  Some decoders
                 will use the gAMA chunk to more accurately display the image. gamma relates  the
                 output  intensity  to the input samples (input_sample = light_out GAMMA).  gamma
                 can be any integer between 0 and 2 32 and is interpreted  as  GAMMA*100000.  For
                 example, if you wanted a GAMMA of 1/2.2, you would enter 45455 for gamma.

       -h        Display help and legal notices.

       -itxt b|a keyword text
                 Insert  an  (uncompressed)  iTXt  chunk.  b|a  indicates whether chunk should be
                 inserted before or after the IDAT chunk, (see Section "Text Chunks" ).

       -keep chunk_name
                 keep named  chunk  chunk_name  even  if  the  PNG  datastream  becomes  invalid.
                 Currently only dSIG is recognized as an acceptable value.

       -l level  zlib  compression  level  to  use  on  the  filtered  IDAT chunk with the method
                 specified by the preceding -m or -brute  option.  zlib  compression  levels  are
                 integers  between 0 and 9.  0 = no compression, 1 = fastest compression, and 9 =
                 best compression.

       -loco     Make the file more compressible by  performing  a  lossless,  reversible,  color
                 transformation.  The  resulting file is a MNG format file, not a PNG, and should
                 be given the .mng file extension. The loco option has no effect on grayscale  or
                 indexed-color PNG files.

       -m method pngcrush  method [0-200] to try (0 means try all of 1-10). Can be repeated as in
                 -m 1 -m 4 -m 7. This can be useful if you run out of memory when pngcrush  tries
                 methods  2,  3,  5, 6, 8, 9, or 10 which use filtering and are memory intensive.
                 Method 1, 4, and 7 use no filtering; methods 11 and  up  use  specified  filter,
                 compression level, and strategy.

       -max maximum_IDAT_size
                 Set  the  maximum  idat  size to be used when creating the compression buffer.[1
                 through 524288]

       -mng      write a new MNG, do not crush embedded PNGs.

       -n        Do not do compression or write output file. This is useful in  conjunction  with
                 the -v option to get info, or to test decode speed.

       -p        This option tells pngcrush to pause and wait for [enter] key whenever the screen

       -plte_len n
                 Truncates the PLTE. The PLTE chunk contains from 1 to 256  palette  entries.  Be
                 sure not to truncate it to less than the greatest index present in IDAT.

       -q        quiet, the opposite of verbose.

       -rem chunkname
                 Name of an ancillary chunk or optional PLTE to be removed. Be careful with this.
                 Please don't use this feature to remove transparency, gamma, copyright, or other
                 valuable  information.   To  remove  several different chunks, repeat: -rem tEXt
                 -rem pHYs.  Known chunks (those in the PNG spec or extensions document)  can  be
                 named with all lower-case letters, so -rem bkgd is equivalent to -rem bKGD.  But
                 note: -rem text removes all forms of text chunks;  Exact  case  is  required  to
                 remove  unknown  chunks.   To do surgery with a chain-saw, -rem alla removes all
                 known ancillary chunks except for tRNS, and -rem allb removes all but  tRNS  and

       -replace_gamma gamma
                 Force a specified gamma in the output file even if gAMA is present in the input.
                 See the -g for more information.

       -res dpi  Write a pHYs chunk with a resolution of  dpi.   The  pHYs  chunk  indicates  the
                 desired pixel size.

       -save     Force  writing  of  unknown  chunks.  If the input image has chunks that are not
                 part of the PNG specification, they should not be discarded.

       -srgb n   Set value of rendering intent for sRGB chunk to n where n is between  0  and  3.
                 The appropriate rendering intent depends on how the image will be used:

                           0 - Perceptual: when good adaptation to the output device gamut at the
                           expense of colorimetric accuracy is desired, example: photographs.

                           1 - Relative colorimetric: images requiring color appearance  matching
                           (relative to the output device white point), example: logos.

                           2:  Saturation:  preservation  of saturation at the expense of hue and
                           lightness is preferred, example: charts and graphs.

                           3: Absolute colorimetric: images requiring  preservation  of  absolute
                           colorimetry,  example:  proofs  (previews  of  images  destined  for a
                           different output device).

       -text [b|a] keyword text
                 Insert a tEXt chunk. [b|a] indicates whether chunk should be inserted before  or
                 after the IDAT chunk, (see Section "Text Chunks" ).

                 Reset file modification time to newer time stamp. This is the default.

                 Retain input file modification time stamp. The default is -newtimestamp which is
                 the opposite of this option.

       -trns index red green blue gray
                 Insert a tRNS (transparency) chunk, if no tRNS chunk found in  file.   You  must
                 give  all five parameters regardless of the color type, scaled to the output bit
                 depth. See the PNG documentation for details.

       -trns_array n trns[0] trns[1] ... trns[n-1]
                 Insert a tRNS (transparency) chunk, if no tRNS chunk found in file. See the  PNG
                 documentation for details.

       -v        Display  more  detailed  information.  Repeat  the option (use "-v -v") for even

       -w size   Specify size in kbytes (or bytes in the case of 512) of the sliding  compression
                 window  where  size is one of [32, 16, 8, 4, 2, 1, or 512]. It's best to use the
                 default (32) unless you run out of memory.   The  program  will  use  a  smaller
                 window anyway when the uncompressed file is smaller than 16k.

       -z strategy
                 Specify  the  zlib  compression strategy [0, 1, or 2] to be used on the filtered
                 IDAT chunk for the method of the preceding  -m.   The  zlib  strategy  parameter
                 tunes the compression algorithm and is one of:

                    •  0 : default, most compression is aimed towards string matching

                    •  1 : some string matching, some Huffman coding

                    •  2 : use only Huffman coding

       -zitxt [b|a] keyword text
                 Insert  a zTXt chunk. [b|a] indicates whether chunk should be inserted before or
                 after the IDAT chunk, (see Section "Text Chunks" ).

       -ztxt [b|a] keyword text
                 zTXt chunk to insert (see -text).

Color Types

       The PNG specification provides for five color types.  The color type  determines  how  the
       IDAT  chunk will be interpreted by the decoder.  Choosing a color type appropriate for the
       color information in  an  image  can  in  principle  reduce  the  size.  However,  certain
       combinations  of  -c and -bit_depth require color counting which is currently disabled. In
       such cases no reduction will take place. Following are the PNG  color  types  followed  by
       their supported bit depths (Note pngcrush does not support changing a file to color type 3
       from another color type.):

          •  0 : grayscale without alpha channel (1,2,4,8,16)

          •  2 : true color without alpha channel (8,16)

          •  3 : indexed color (1,2,4,8)

          •  4 : grayscale with alpha channel (8,16)

          •  6 : true color with alpha channel (8,16)

       An alpha channel represents transparency on a per pixel basis. An alpha value of  zero  is
       completely transparent. An alpha channel of 2 bitdepth-1 is completely opaque.

Filter Types

       The  IDAT chunk can optionally be filtered before compression.  These filters can make the
       IDAT chunk more compressible without losing any data and result in  a  smaller  PNG  file.
       These  filters  are applied to the bytes of the IDAT chunk, not the pixels. Following is a
       brief description of the filters, see the PNG specification for details:

          •  0 : no filter

          •  1 : 'sub'  transmits  the  difference  between  each  byte  and  the  value  of  the
             corresponding byte of the prior pixel.

          •  2  :  'up'  transmits  the  difference  between  each  byte  and  the  value  of the
             corresponding byte of the pixel above this pixel

          •  3 : 'average' transmits the difference between each byte  and  the  average  of  the
             bytes described in filters 1 and 2

          •  4  :  'paeth'  computes  a simple linear function of the corresponding byte in three
             neighboring pixels (paeth_predictor = left + above - upper left), then transmits the
             difference  between  the  byte  in  question and the neighboring byte closest to the
             value of paeth_predictor.

Text Chunks

       Textual information pertaining to an image can be conveyed with the tEXt,  iTXt  and  zTXt
       chunks. All text chunks consist of a keyword followed by a string.  The following keywords
       are defined in the PNG specification: (you may invent keywords for other purposes):

                 Title: Short title or caption for image

                 Author: Name of image's creator

                 Description: Longer description of image

                 Copyright: Copyright notice

                 Creation Time: Time of original image creation

                 Software: Software used to create the image

                 Disclaimer: Legal disclaimer

                 Warning: Warning of nature of content

                 Source: Device used to create the image

                 Comment: Miscellaneous comment.

       A tEXt chunk stores text in the ISO/IEC 8859-1 (Latin-1) character set.  zTXt chunks  also
       use  the  Latin-1 character set, but the text is compressed.  This can be useful for large
       text chunks.  iTXt chunks consist of text in the UTF-8 of the Unicode character set.

       keyword must be at least 1 character and less than 80 characters.  text must be less  than
       2048   characters when using pngcrush  For  now,  you can only add ten tEXt, iTXt, or zTXt
       chunks per pngcrush run.


       png(5), libpng(3), zlib(3).


       This manual page was written by David Whedon for the Debian  GNU/Linux
       system  (but  may  be  used  by  others).   Much  of the information was gleaned from "PNG
       (Portable Network Graphics) Specification, Version 1.2"