pngquant Installation

Compiling on Linux, *BSD and macOS

(For instructions for Windows see section below.)

Using GNU/Makefile

To get the code:

git clone --recursive https://github.com/kornelski/pngquant.git

You will need libpng installed with development headers. On Linux install libpng-dev package. On macOS brew install libpng.

There's an optional ./configure step (see sections below). Run:

make

It will create pngquant executable in the current directory. If you'd like to install it system-wide:

sudo make install

By default it will be installed in /usr/local/bin. To install it in another directory run ./configure --prefix=dir && make.

pngquant uses GNU Makefile. To compile on FreeBSD you will need to use gmake.

Avoid Linux distros that ship with libpng 1.2. It is old and buggy. Use libpng 1.6 or later.

Using Rust/Cargo

If you have Rust, you can also build with cargo build.

Custom static libpng

Extract libpng source code as a subdirectory of pngquant source directory. Build static libpng (./configure --enable-static && make), and then ./configure && make pngquant.

When building with Cargo, export PNG_STATIC=1.

Windows

Compiling on Windows is supported only via Rust/Cargo.

  1. Install git (msys-git).
  2. Install Visual C++ 2015 Build Tools.
  3. Install Rust
  4. Restart Windows.

Open Git's Bash prompt and run:

git clone -b msvc --recursive https://github.com/kornelski/pngquant.git
cd pngquant

This will create pngquant folder in your user folder. And then run:

cargo build --release

It will create pngquant.exe in target/release subfolder.

Compilation with OpenMP

cargo build --release --features=openmp # or
cargo build --release --features=openmp-static

On macOS you may need to install gcc and run export CC=gcc-7 first, because clang doesn't support OpenMP (yet).

Compilation without Cocoa image reader

macOS version can use Cocoa to read images. This adds support for color profiles and other image formats as input.

cargo build --release --features=cocoa

Compilation with Little CMS 2

Little CMS library is used by default.

It's linked dynamically if pkg-config is working (e.g. install liblcms2-dev). Otherwise uses static build as a fallback.

Set export LCMS2_STATIC=1 to force static linking.

Compilation of libimagequant.a only

If you want to use pngquant's conversion algorithm without loading/saving PNG files, then you can run make or cargo build in the lib/ directory.

The library doesn't need libpng nor zlib.

Return to home page.