OPTIPNG(1)                                                          OPTIPNG(1)

NAME
       OptiPNG - Optimize Portable Network Graphics files

SYNOPSIS
       optipng [-? | -h | -help]
       optipng [options...] files...

DESCRIPTION
       The  OptiPNG  program  shall attempt to optimize PNG files, i.e. reduce
       their size to a minimum, without losing semantic information. In  addi-
       tion,  this  program  shall perform a suite of auxiliary functions like
       integrity checks, metadata recovery and pixmap-to-PNG conversion.

       The optimization attempts are not  guaranteed  to  succeed.  Valid  PNG
       files  that  cannot  be  optimized  by  this  program are normally left
       intact; their size will not grow. The user may request to override this
       default behavior.

FILES
       The  input  files  are  raster image files encoded either in PNG format
       (the native format), or in an external format. The currently  supported
       external formats are GIF, BMP, PNM and TIFF.

       OptiPNG processes each image file given in the command line as follows:

       - If the image is in PNG format:

              Attempts to optimize the given file in-place. If optimization is
              successful, or if the option -force  is  enabled,  replaces  the
              original  file  with its optimized version. The original file is
              backed up if the option -keep is enabled.

       - If the image is in an external format:

              Creates an optimized PNG version of the given file.  The  output
              file  name  is composed from the original file name and the .png
              extension.

       Existing files are not  overwritten,  unless  the  option  -clobber  is
       enabled.

OPTIONS
   General options
       -?, -h, -help
              Show a complete summary of options.

       -backup, -keep
              Keep a backup of the modified files.

       -clobber
              Overwrite the existing output and backup files.
              Under this option, if the option -backup is not enabled, the old
              backups of the overwritten files are deleted.

       -dir directory
              Write the output files to directory.

       -fix   Enable error recovery. This option has no effect on valid  input
              files.
              The  program will spend a reasonable amount of effort to recover
              as much data as possible, without  increasing  the  output  file
              size,  but  the success cannot be generally guaranteed. The pro-
              gram may even increase the file size,  e.g.,  by  reconstructing
              missing  critical  data. Under this option, integrity shall take
              precedence over file size.
              When this option is not used, the invalid input files  are  left
              unprocessed.

       -force Enforce writing of a new output file.
              This  option  overrides the program's decision not to write such
              file, e.g. when the PNG input is digitally signed (using  dSIG),
              or when the PNG output becomes larger than the PNG input.

       -log file
              Log  messages  to  file.  For safety reasons, file must have the
              extension .log.
              This option is deprecated and will be  removed  eventually.  Use
              shell redirection.

       -out file
              Write  output  file  to  file.   The  command  line must contain
              exactly one input file.

       -preserve
              Preserve file attributes (time stamps, file access rights, etc.)
              where applicable.

       -quiet, -silent
              Run in quiet mode.
              The  messages  are  still  written to the log file if the option
              -log is enabled.

       -simulate
              Run in simulation mode: perform the trials, but  do  not  create
              output files.

       -v     Enable the options -verbose and -version.

       -verbose
              Run in verbose mode.

       -version
              Show copyright, version and build info.

       --     Stop option switch parsing.

   PNG encoding and optimization options
       -o level
              Select the optimization level.
              The  optimization  level  0 enables a set of optimization opera-
              tions that require minimal effort. There will be no  changes  to
              image attributes like bit depth or color type, and no recompres-
              sion of existing IDAT datastreams.
              The optimization level  1  enables  a  single  IDAT  compression
              trial. The trial chosen is what OptiPNG thinks it's probably the
              most effective.
              The optimization levels 2 and higher enable multiple  IDAT  com-
              pression trials; the higher the level, the more trials.
              The  behavior  and  the  default value of this option may change
              across different program versions. Use the option -h to see  the
              details pertaining to your specific version.

       -f filters
              Select the PNG delta filters.
              The  filters  argument  is specified as a rangeset (e.g. -f0-5),
              and the default filters value depends on the optimization  level
              set by the option -o.
              The  filter  values  0, 1, 2, 3 and 4 indicate static filtering,
              and correspond to the standard PNG filter codes (None, Left, Up,
              Average  and  Paeth, respectively). The filter value 5 indicates
              adaptive filtering, whose effect is  defined  by  the  libpng(3)
              library used by OptiPNG.

       -full  Produce  a full report on IDAT.  This option might slow down the
              trials.

       -i type
              Select the interlace type (0-1).
              If the interlace type 0 is selected, the output image  shall  be
              non-interlaced (i.e. progressive-scanned). If the interlace type
              1 is selected, the output image shall be  interlaced  using  the
              Adam7 method.
              By default, the output shall have the same interlace type as the
              input.

       -nb    Do not apply bit depth reduction.

       -nc    Do not apply color type reduction.

       -np    Do not apply palette reduction.

       -nx    Do not apply any lossless image reduction:  enable  the  options
              -nb, -nc and -np.

       -nz    Do not recode IDAT datastreams.
              The  IDAT  optimization  operations that do not require recoding
              (e.g. IDAT chunk concatenation) are still performed.
              This option has effect on PNG input files only.

       -zc levels
              Select the zlib compression levels used in IDAT compression.
              The levels argument is specified as a  rangeset  (e.g.  -zc6-9),
              and  the  default levels value depends on the optimization level
              set by the option -o.
              The effect of this option is defined by the zlib(3) library used
              by OptiPNG.

       -zm levels
              Select the zlib memory levels used in IDAT compression.
              The  levels  argument  is specified as a rangeset (e.g. -zm8-9),
              and the default levels value depends on the  optimization  level
              set by the option -o.
              The effect of this option is defined by the zlib(3) library used
              by OptiPNG.

       -zs strategies
              Select the zlib compression strategies used in IDAT compression.
              The  strategies  argument  is  specified  as  a  rangeset  (e.g.
              -zs0-3),  and  the default strategies value depends on the opti-
              mization level set by the option -o.
              The effect of this option is defined by the zlib(3) library used
              by OptiPNG.

       -zw size
              Select  the  zlib window size (32k,16k,8k,4k,2k,1k,512,256) used
              in IDAT compression.
              The size argument can be specified either in bytes (e.g.  16384)
              or  kilobytes  (e.g.  16k). The default size value is set to the
              lowest window size that yields an  IDAT  output  as  big  as  if
              yielded by the value 32768.
              The effect of this option is defined by the zlib(3) library used
              by OptiPNG.

   Editing options
       -snip  Cut one image out of multi-image, animation or video files.
              Depending on the input format, this may be either the  first  or
              the most relevant (e.g. the largest) image.

       -strip objects
              Strip metadata objects from a PNG file.
              PNG  metadata  is  the information stored in any ancillary chunk
              except tRNS.  (tRNS represents the alpha channel, which, even if
              ignored  in  rendering,  is  still a proper image channel in the
              RGBA color space.)
              The only option currently supported is -strip all.

   Notes
       Options may come in any order (except for --), before, after, or alter-
       nating  with  file  names. Option names are case-insensitive and may be
       abbreviated to their shortest unique prefix.

       Some options may have arguments that follow the option name,  separated
       by whitespace or the equal sign ('='). If the option argument is a num-
       ber or a rangeset, the separator may be omitted. For example:

              -out newfile.png  <=>  -out=newfile.png
              -o3  <=>  -o 3  <=>  -o=3
              -f0,3-5  <=>  -f 0,3-5  <=>  -f=0,3-5

       Rangeset arguments are cumulative; e.g.

              -f0 -f3-5  <=>  -f0,3-5
              -zs0 -zs1 -zs2-3  <=>  -zs0,1,2,3  <=>  -zs0-3

EXTENDED DESCRIPTION
       The PNG optimization algorithm consists of the following steps:

       1.  Reduce the bit depth, the color type and the color palette  of  the
           image.   This  step  may reduce the size of the uncompressed image,
           which, indirectly, may reduce the  size  of  the  compressed  image
           (i.e. the size of the output PNG file).

       2.  Run  a  suite  of compression methods and strategies and select the
           compression parameters that yield the smallest output file.

       3.  Store all IDAT contents into a single chunk, eliminating the  over-
           head incurred by repeated IDAT headers and CRCs.

       4.  Set  the  zlib  window  size inside IDAT to a mininum that does not
           affect the compression ratio, reducing the memory  requirements  of
           PNG decoders.

       Not all of the above steps need to be executed. The behavior depends on
       the actual input files and user options.

       Step 1 may be customized via the no-reduce options -nb,  -nc,  -np  and
       -nx.  Step 2 may be customized via the -o option, and may be fine-tuned
       via the options -zc, -zm, -zs and -zw. Step 3 is always executed.  Step
       4  is  executed  only  if a new IDAT is being created, and may be fine-
       tuned via the option -zw.

       Extremely exhaustive searches are not generally expected to yield  sig-
       nificant  improvements  in  compression  ratio,  and are recommended to
       advanced users only.

EXAMPLES
       optipng file.png      # default speed
       optipng -o5 file.png  # slow
       optipng -o7 file.png  # very slow

BUGS
       Lossless image reductions are not completely implemented.   (This  does
       not  affect  the  integrity of the output files.)  Here are the missing
       pieces:

              - The color palette reductions are implemented only partially.
              - The bit depth reductions below 8, for  grayscale  images,  are
              not implemented yet.

       Encoding of images whose total IDAT size exceeds 2GB is not supported.

       TIFF support is limited to uncompressed, PNG-compatible (grayscale, RGB
       and RGBA) images.

       Metadata is not imported from the external image formats.

       There is no support for pipes or streams.

SEE ALSO
       png(5), libpng(3), zlib(3), pngcrush(1), pngrewrite(1).

STANDARDS
       The files produced by OptiPNG are compliant with PNG-2003:
       Glenn Randers-Pehrson et al.  Portable Network Graphics (PNG)  Specifi-
       cation, Second Edition.
       W3C Recommendation 10 November 2003; ISO/IEC IS 15948:2003 (E).
       http://www.w3.org/TR/PNG/

AUTHOR
       OptiPNG is written and maintained by Cosmin Truta.

       This  manual  page  was originally written by Nelson A. de Oliveira for
       the Debian Project. It was later updated by Cosmin Truta,  and  is  now
       part of the OptiPNG distribution.

OptiPNG version 0.7.4             2012-Oct-21                       OPTIPNG(1)
