227 lines
9.7 KiB
Text
227 lines
9.7 KiB
Text
oxipng 10.1.0
|
|
Losslessly improve compression of PNG files
|
|
|
|
Usage: oxipng [OPTIONS] <files>...
|
|
|
|
Arguments:
|
|
<files>...
|
|
File(s) to compress (use '-' for stdin)
|
|
|
|
Options:
|
|
-o, --opt <level>
|
|
Set the optimization level preset. The default level 2 is quite fast and provides good
|
|
compression. Lower levels are faster, higher levels 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 arguments.
|
|
|
|
[default: 2]
|
|
|
|
-r, --recursive
|
|
When directories are given as input, traverse the directory trees and optimize all PNG
|
|
files found (files with “.png” or “.apng” extension).
|
|
|
|
--dir <directory>
|
|
Write output file(s) to <directory>. If the directory does not exist, it will be created.
|
|
Note that this will not preserve the directory 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 following:
|
|
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 retained 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 generally recommended for better compression,
|
|
but take care as while this is “visually lossless”, it is technically a lossy
|
|
transformation and may be unsuitable for some applications.
|
|
|
|
-i, --interlace <mode>
|
|
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 image. Only use it if you
|
|
believe the benefits outweigh the costs for your use case.
|
|
|
|
[default: off]
|
|
|
|
--scale16
|
|
Forcibly reduce images with 16 bits per channel to 8 bits per channel. 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, followed by a single main
|
|
compression trial of the best result. Recommended 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 change color palette
|
|
|
|
--ng
|
|
Do not change to or from grayscale
|
|
|
|
--nx
|
|
Do not perform any transformations and do not deinterlace by default.
|
|
|
|
--nz
|
|
Do not recompress IDAT unless required due to transformations. Recompression 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 compression trials.
|
|
Recommended use is with '-o max' and '--fast'.
|
|
|
|
--zi <iterations>
|
|
Set the number of iterations to use for Zopfli compression. Using fewer iterations may
|
|
speed up compression for large files. This option requires '--zopfli' to be set.
|
|
|
|
[default: 15]
|
|
|
|
--ziwi <iterations>
|
|
Stop Zopfli compression after this number of iterations without improvement. 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. Oxipng will check the
|
|
timeout before each transformation or compression 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 avoiding long processing times on large images. The value may be specified
|
|
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
|