home | help
oxipng(1)		     General Commands Manual		       oxipng(1)

NAME
     oxipng - Losslessly improve compression of PNG files

SYNOPSIS
     oxipng  [-o|--opt]  [-r|--recursive]  [--dir] [--out] [--stdout] [-p|--pre-
     serve] [-d|--dry-run] [-s ] [--strip]  [--keep]  [-a|--alpha]  [-i|--inter-
     lace] [--scale16] [-v|--verbose]... [-q|--quiet] [-j|--json] [-f|--filters]
     [--fast] [--zc] [--nb] [--nc] [--np] [--ng] [--nx] [--nz] [--fix] [--force]
     [-z|--zopfli]  [--zi]  [--ziwi] [--brute-level] [--brute-lines] [--timeout]
     [--max-raw-size] [-t|--threads] [--sequential]  [-h|--help]  [-V|--version]
     <files>

DESCRIPTION
     Losslessly improve compression of PNG files

OPTIONS
     -o, --opt <level> [default: 2]
	    Set the optimization level preset. The default level 2 is quite fast
	    and  provides good compression. Lower levels are faster, higher lev-
	    els provide better compression, though with increasingly diminishing
	    returns.

		0   => --zc 5  --fast		   (filter chosen heuristically)
		1   => --zc 10 --fast		   (filter chosen heuristically)
		2   => --zc 11 -f 0,1,6,7 --fast
		3   => --zc 11 -f 0,7,8,9	  --brute-level 1  --brute-lines
	    3
		4    => --zc 12 -f 0,7,8,9	   --brute-level 1 --brute-lines
	    4
		5   => --zc 12 -f 0,1,2,5,6,7,8,9 --brute-level 4  --brute-lines
	    4
		6    => --zc 12 -f 0-9		   --brute-level 5 --brute-lines
	    8
		max => (stable alias for the maximum level)

	    Manually specifying a compression option (zc, f, etc.) will override
	    the optimization preset, regardless of the order you write the argu-
	    ments.

     -r, --recursive
	    When directories are given as input, traverse  the	directory  trees
	    and  optimize  all PNG files found (files with a.pnga or a.apnga ex-
	    tension).

     --dir <directory>
	    Write output file(s) to <directory>. If the directory does	not  ex-
	    ist, it will be created. Note that this will not preserve the direc-
	    tory structure of the input files when used with '--recursive'.

     --out <file>
	    Write output file to <file>

     --stdout
	    Write output to stdout

     -p, --preserve
	    Preserve file permissions and timestamps if possible

     -d, --dry-run
	    Do not write any files, only show compression results

     -s     Strip safely-removable chunks, same as '--strip safe'

     --strip <mode>
	    Strip metadata chunks, where <mode> is one of:

		safe	 =>   Strip all non-critical chunks, except for the fol-
	    lowing:
				cICP, iCCP, sRGB, pHYs, acTL, fcTL, fdAT
		all	=>  Strip all non-critical chunks
		<list>	=>  Strip  chunks  in  the  comma-separated  list,  e.g.
	    'bKGD,cHRM'

	    CAUTION: 'all' will convert APNGs to standard PNGs.

	    Please  note  that	regardless  of any options set, some chunks will
	    necessarily be stripped when invalidated by the optimization:
		bKGD, sBIT, hIST: Stripped  if	the  color  type  or  bit  depth
	    changes.
		iDOT: Always stripped.
		caBX:  Stripped  if it contains C2PA metadata. If explicitly re-
	    tained by `--keep`, optimization will be aborted.

	    The default when --strip is not passed is to keep  all  chunks  that
	    remain valid.

     --keep <list>
	    Strip  all metadata chunks except those in the comma-separated list.
	    The special value 'display' includes chunks that  affect  the  image
	    appearance, equivalent to '--strip safe'.

	    E.g.  '--keep eXIf,display' will strip chunks, keeping only eXIf and
	    those that affect the image appearance.

     -a, --alpha
	    Perform additional optimization on images with an alpha channel,  by
	    altering  the color values of fully transparent pixels. This is gen-
	    erally recommended for better compression, but take  care  as  while
	    this  is  avisually losslessa, it is technically a lossy transforma-
	    tion and may be unsuitable for some applications.

     -i, --interlace <mode> [default: off]
	    Set the PNG interlacing mode, where <mode> is one of:

		off   =>  Remove interlacing from all images that are processed
		on    =>   Apply  Adam7  interlacing  on  all  images  that  are
	    processed
		keep  =>  Keep the existing interlacing mode of each image

	    Note that interlacing can add 25-50% to the size of an optimized im-
	    age.  Only use it if you believe the benefits outweigh the costs for
	    your use case.

     --scale16
	    Forcibly reduce images with 16 bits per channel to 8 bits per  chan-
	    nel.  This	is a lossy operation but can provide significant savings
	    when you have no need for higher depth. Reduction  is  performed  by
	    scaling  the values such that, e.g. 0x00FF is reduced to 0x01 rather
	    than 0x00.

	    Without this flag, 16-bit images will only be reduced in depth if it
	    can be done losslessly.

     -v, --verbose
	    Show per-file info (use multiple times for more detail)

     -q, --quiet
	    Suppress all output messages

     -j, --json
	    Print results as JSON

     -f, --filters <list>
	    Perform compression trials with each of the given filter types.  You
	    can  specify  a comma-separated list, or a range of values. E.g. '-f
	    0-3' is the same as '-f 0,1,2,3'.

	    PNG delta filters (apply the same filter to every line)
		0  =>  None	 (recommended to always include this filter)
		1  =>  Sub
		2  =>  Up
		3  =>  Average
		4  =>  Paeth

	    Heuristic strategies (try to find the best	delta  filter  for  each
	    line)
		5  =>  MinSum	 Minimum sum of absolute differences
		6  =>  Entropy	 Smallest Shannon entropy
		7  =>  Bigrams	 Lowest count of distinct bigrams
		8  =>  BigEnt	 Smallest Shannon entropy of bigrams
		9  =>  Brute	 Smallest compressed size (slow)

	    The default value depends on the optimization level preset.

     --fast
	    Perform  a	fast compression evaluation of each enabled filter, fol-
	    lowed by a single main compression trial of the best result.  Recom-
	    mended if you have more filters enabled than CPU cores.

     --zc <level>
	    Deflate  compression  level  (0-12) for main compression trials. The
	    levels here are defined by the libdeflate compression library.

	    The default value depends on the optimization level preset.

     --nb   Do not change bit depth

     --nc   Do not change color type

     --np   Do not convert to indexed  and  do	not  modify  an  existing  color
	    palette.

     --ng   Do not change to or from grayscale

     --nx   Do	not  perform  any  transformations and do not deinterlace by de-
	    fault.

     --nz   Do not recompress IDAT unless required due to  transformations.  Re-
	    compression  of  other compressed chunks (such as iCCP) will also be
	    disabled. Note that the combination of '--nx' and '--nz' will  fully
	    disable all optimization.

     --fix  Do	not  perform  checksum	validation of PNG chunks. This may allow
	    some files with errors to be processed successfully. The output will
	    always have correct checksums.

     --force
	    Write the output even if it is larger than the input

     -z, --zopfli
	    Use the much slower but stronger Zopfli compressor for main compres-
	    sion trials. Recommended use is with '-o max' and '--fast'.

     --zi <iterations> [default: 15]
	    Set the number of iterations to use for  Zopfli  compression.  Using
	    fewer  iterations may speed up compression for large files. This op-
	    tion requires '--zopfli' to be set.

     --ziwi <iterations>
	    Stop Zopfli compression after this number of iterations without  im-
	    provement.	Use  this in conjunction with a high value for '--zi' to
	    achieve better compression in reasonable time.

     --brute-level <level>
	    Set the libdeflate compression level to use with  the  Brute  filter
	    strategy.  Sane  values  are  1-5. Higher values are not necessarily
	    better.

     --brute-lines <lines>
	    Set the number of lines to compress at once with  the  Brute  filter
	    strategy.  Sane  values  are 2-16. Higher values are not necessarily
	    better.

     --timeout <secs>
	    Maximum amount of time, in seconds, to spend on  optimizations.  Ox-
	    ipng  will	check the timeout before each transformation or compres-
	    sion trial, and will stop trying to optimize the file if the timeout
	    is exceeded. Note that this does not cut short any	operations  that
	    are already in progress, so it is currently of limited effectiveness
	    for large files with high compression levels.

     --max-raw-size <bytes>
	    Maximum  size to allow for the input image. If the raw, decompressed
	    image data (or the file size) of the image	exceeds  this  size,  it
	    will  be skipped. This is useful for limiting memory usage or avoid-
	    ing long processing times on large images. The value may  be  speci-
	    fied with a unit suffix such as k, KB, m, MB, etc.

	    The decompressed size of an image is roughly equal to width * height
	    *  bit-depth  /  8.  E.g.  a 1920x1080 image with 24-bit color depth
	    would be roughly 6MB.

     -t, --threads <num>
	    Set the maximum number of threads to use. Oxipng uses multithreading
	    to evaluate multiple optimizations on the same file in  parallel  as
	    well  as  process  multiple files in parallel. You can set this to a
	    lower value if you need to limit memory or CPU usage.

	    [default: num logical CPUs]

     --sequential
	    Process multiple files sequentially rather	than  in  parallel.  Use
	    this  if  you need determinism in the processing order. Note this is
	    not necessary if using '--threads 1'.

     -h, --help
	    Print help (see a summary with '-h')

     -V, --version
	    Print version

     <files>
	    File(s) to compress (use '-' for stdin)

VERSION
     v0.1.0

AUTHORS
     Joshua Holmer <jholmer.in@gmail.com>

				  oxipng 0.1.0			       oxipng(1)

home | help