pngquant is a command-line utility and a library for lossy compression of PNG images.
The conversion reduces file sizes significantly (often as much as 70%) and preserves full alpha transparency. Generated images are compatible with all web browsers and operating systems.
You can install it with:
wapm install -g pngquant
This is the official pngquant
repository. The compression engine is also available as an embeddable library.
pngquant *.png
… | pngquant - | …
See pngquant -h
for full list.
--quality min-max
min
and max
are numbers in range 0 (worst) to 100 (perfect), similar to JPEG. pngquant will use the least amount of colors required to meet or exceed the max
quality. If conversion results in quality below the min
quality the image won't be saved (if outputting to stdin, 24-bit original will be output) and pngquant will exit with status code 99.
pngquant --quality=65-80 image.png
--ext new.png
Set custom extension (suffix) for output filename. By default -or8.png
or -fs8.png
is used. If you use --ext=.png --force
options pngquant will overwrite input files in place (use with caution).
-o out.png
or --output out.png
Writes converted file to the given path. When this option is used only single input file is allowed.
--skip-if-larger
Don't write converted files if the conversion isn't worth it.
--speed N
Speed/quality trade-off from 1 (slowest, highest quality, smallest files) to 11 (fastest, less consistent quality, light comperssion). The default is 4. It's recommended to keep the default, unless you need to generate images in real time (e.g. map tiles). Higher speeds are fine with 256 colors, but don't handle lower number of colors well.
--nofs
Disables Floyd-Steinberg dithering.
--floyd=0.5
Controls level of dithering (0 = none, 1 = full). Note that the =
character is required.
--posterize bits
Reduce precision of the palette by number of bits. Use when the image will be displayed on low-depth screens (e.g. 16-bit displays or compressed textures in ARGB444 format).
--strip
Don't copy optional PNG chunks. Metadata is always removed on Mac (when using Cocoa reader).
See man page (man pngquant
) for the full list of options.
This version of pngquant is built using v2.8.0 of pngquant. Original configure script needs to be patched in order to be used by emscripten. Patched version of this file is present in the deps folder in this directory. Additionally, patch file for configure script is also present in the repository in order to create a fresh copy. Build script assumes that emscripten is already built and available in the system path. Once this is ensured, just run ./build.sh
which will initiate build process and pngquant. will be available in dist folder.
pngquant is dual-licensed:
Under GPL v3 or later with an additional copyright notice that must be kept for the older parts of the code.
Or a commercial license for use in non-GPL software (e.g. closed-source or App Store distribution). You can get the license via Super Source. Email kornel@pngquant.org if you have any questions.