Improved reporting of invalid chunk names. Does not try to put
non-printable characters in STDERR; displays hex numbers instead.
Fixed include path for utime.h on MSVC (Louis McLaughlin).
Eliminated "FAR" memory support (it was removed from libpng at version
Disabled the "-already_crushed" option which does not really work well.
pngcrush-1.7.84 fixes more Coverity-scan defects (none are reported now), so it should be more resistant to crashes due to malformed input files, such as the one presented in CVE-2015-2158.
pngcrush version 1.7.83 fixes some Coverity-scan warnings. It was built with libpng-1.6.16.
pngcrush-1.7.81 fixes an off-by-one error in the -reduce_palette operation. The resulting PLTE chunk was one entry (3 bytes) too short.
pngcrush-1.7.80 implements the "-reduce_palette" option.
pngcrush-1.7.79 fixes some old bugs with palette truncation. Use the "-reduce_palette" option to remove any unused palette entries at the top end of the PLTE chunk.
pngcrush-1.7.77 has been released. It was built with libpng-1.6.13.
pngcrush-1.7.76 is released. It was built with libpng-1.6.12.
Fixed a bug with reducing 16-bit images to 8-bit using "-reduce" option
Restored calls to png_set_crc_action() which had been removed from
version 1.7.72 for some testing and inadvertently not restored.
Changed "fix" internal variable name to "salvage" (still set with "-fix")
Added code to fix/salvage PNG with "bad adaptive filter value" error.
Avoid calculating CRC during compression trials except for the last trial,
when the output is actually written.
pngcrush-1.7.71 is built with libpng-1.6.9. The Windows binaries are now built with TOO_FAR=32767 instead of the default 4096 which results in some files becoming slightly more compressed.
pngcrush-1.7.70 is built with libpng-1.6.8 and zlib-1.2.8. The "-bit_depth N" option has been removed because it did not always work.
pngcrush-1.7.67 fixes a bug in the textual chunk insertion, introduced around version 1.7.62.
pngcrush-1.7.66 is available. It fixes a bug in recent versions (1.7.60 through 65) that handled the "-reduce" option improperly, such that the alpha channel was stripped even when it was not opaque.
A bug was introduced in libpng-1.7.61, released yesterday, that caused pngcrush to handle single-character options like "-v" incorrectly. This bug is fixed in 1.7.62.
The palette-truncation wasn't always working correctly so it's no longer automatically enabled by the "-reduce" or "-new" options.
pngcrush-1.7.56 has been released to fix a bug with reading sub-8-bit files when built with the system libpng (the "-nolib" distribution). There was no problem when previous versions were built with the bundled libpng and zlib.
pngcrush-1.7.54 is built with libpng-1.6.1rc01 and zlib-220.127.116.11; nothing within pngcrush itself was changed.
pngcrush-1.7.52 fixes some initialization problems that were introduced in versions 1.7.50 and 1.7.51. The new "-reduce" options appears to be working properly now.
This version is built with libpng-1.6.1beta06 and zlib-1.2.7.
pngcrush-1.7.47 has been released. This fixes a bug in versions 1.7.45 and 46 that caused them to fail to write an output file.
pngcrush-1.7.41 has been released. It fixes a bug, introduced in version 1.7.39, which causes pngcrush to fail to open an output file.
pngcrush-1.7.12 is built with libpng-1.4.4beta05 and zlib-1.2.5
pngcrush-1.7.11 is built with libpng-1.4.2 and zlib-1.2.5
The contents of text chunks following IDAT are now displayed when the "-n" option is used. Previously they were only shown when a crushed output file was written.
This version is built with libpng-1.2.40. Some additional checks for "version" have been added, to make the "-s" option a little more silent.
The bundled libpng files are updated to version 1.2.39.