Pngcrush is an optimizer for PNG (Portable Network Graphics) files. It can be run from a commandline in an MSDOS window, or from a UNIX or LINUX commandline.
Its main purpose is to reduce the size of the PNG IDAT datastream by trying various compression levels and PNG filter methods. It also can be used to remove unwanted ancillary chunks, or to add certain chunks including gAMA, tRNS, iCCP, and textual chunks.
Pngcrush is open source and may be used, modified, and redistributed by anyone without paying a fee. The license, embedded in the file pngcrush.c, is equivalent but not identical to the libpng license found in the libpng file png.h.
The source code for pngcrush is here. and the binary executables, built by third party volunteers and not always up to date, are here. Pngcrush uses libpng and zlib, both of which are included in this pngcrush source distribution. They are slightly modified:
If you prefer, you can compile only pngcrush.c from the pngcrush source distribution and run it with the stock libpng and zlib, which can be found at the PNG web site, www.libpng.org/pub/png/. If you do this,
Precompiled binaries for Windows (runs in MSDOS window, built under DJGPP) and RISCOS platforms (all perhaps out-of-date) are here
A fork of pngcrush development exists, by Cosmin Truta, with a slightly different feature set and search space. See http://www.cs.toronto.edu/~cosmin/pngtech/optipng/"
Pngcrush is a commandline application. If you prefer a draggity-droppity GUI, several are available, including these which embed pngcrush along with other commandline image compressors/optimizers: