What's new in Pngcrush 1.8.13
Nov 7, 2017
- Add "exit(0)" after processing "-version" argument, to avoid
- displaying the Usage information (bug report by Peter Hagan,
- Issue #76).
- Fix problem with MacOS prior to Sierra; it uses CLOCK_MONOTONIC
- for some other purpose (bug report and help developing patch by
- Github user "ilovezfs", Homebrew/homebrew-core PR#16391).
New in Pngcrush 1.7.81 (Dec 23, 2014)
- Fixed off-by-one error in calculation of plte_len.
New in Pngcrush 1.7.80 (Dec 23, 2014)
- Added "-reduce_palette" and "-noreduce_palette" options.
- Enable reduce_palette when the "-new" or "-reduce" option is used.
New in Pngcrush 1.7.79 (Dec 23, 2014)
- Fixed bug in -plte_len N option.
New in Pngcrush 1.7.78 (Dec 23, 2014)
- Made "-s" and "-silent" options suppress libpng warnings.
New in Pngcrush 1.7.77 (Dec 23, 2014)
- Updated libpng to version 1.6.13.
New in Pngcrush 1.7.76 (Dec 23, 2014)
- Updated libpng to version 1.6.12.
New in Pngcrush 1.7.75 (Dec 23, 2014)
- Reverted libpng to version 1.6.10 due to a misplaced statement in png.c
New in Pngcrush 1.7.74 (Dec 23, 2014)
- Fixed "-zmem" option (only "-zm" would work since version 1.7.62).
New in Pngcrush 1.7.73 (Dec 23, 2014)
- 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
- Fixed a bug with reducing 16-bit images to 8-bit using "-reduce" option
New in Pngcrush 1.7.71 (Dec 23, 2014)
- Built the Windows binaries using -DTOO_FAR=32767; neglected to do this in versions 1.7.42 through 1.7.70, which caused the Windows binaries to produce different (usually a few bytes larger) results than Linux.
New in Pngcrush 1.7.69 (Dec 23, 2014)
- Updated libpng to version 1.6.6.
New in Pngcrush 1.7.68 (Dec 23, 2014)
- Check for NULL return from malloc().
- Undefine CLOCKS_PER_SECOND "1000" found in some version of MinGW.
- Replaced most "atoi(argv[++i])" with "pngcrush_get_long" which does "BUMP_I; strtol(argv[i],ptr,10)" and added pngcrush_check_long macro to detect malformed or missing parameters (debian bug 716149).
- Added global_things_have_changed=1 when reading -bkgd.
- The "-bit_depth N" option did not work reliably and has been removed.
New in Pngcrush 1.7.67 (Dec 23, 2014)
- Fixed handling of "-text" and "-ztext" options for text input. They had been reduced to "-t" and "-z" with an incorrect argument (3 instead of 2) in version 1.7.62.
New in Pngcrush 1.7.66 (Dec 23, 2014)
- Revised pngcrush_examine_pixels_fn() to fix some incorrect reductions.
New in Pngcrush 1.7.65 (Dec 23, 2014)
- Do not allow any colortype or depth reductions if acTL is present
- Added warnings to explain why any requested reductions were not allowed
New in Pngcrush 1.7.63 (Dec 23, 2014)
- Add "int dowildcard=-1;" in an attempt to get wildcard arguments working in the cross-compiled MinGW executables.
New in Pngcrush 1.7.62 (Dec 23, 2014)
- Remove old filename before renaming, when using the "-ow" option on any Windows platform, not just CYGWIN (see log entry for pngcrush-1.7.43).
- Reverted error with handling single-character options like "-v", introduced
- in 1.7.61.
New in Pngcrush 1.7.61 (Jun 12, 2013)
- Check sBIT chunk data to see if reduction to gray or to 8-bit is permitted,
- i.e., the RGB sBIT values are equal to each other or the sBIT values are
- not greater than 8, respectively.
- Do not try to make_opaque if the tRNS chunk is found.
- Added warning when ignoring an invalid commandline option.
- Improved brute_force handling with specified level, filter, or strategy.
New in Pngcrush 1.7.60 (Jun 12, 2013)
- Revise -reduce so reducing from color-type 6 to grayscale works.
- Issue a warning if reducing bit depth or color type would violate various
- chunk dependencies, and do not perform the action:
- Do not reduce to grayscale if a color bKGD chunk, sBIT or iCCP chunk
- is present.
- Do not reduce bit depth if bKGD or sBIT chunk is present.
- Do not reduce palette length if the hIST chunk is present.
- Set "found_iCCP" flag to zero to avoid re-reading a bad iCCP chunk.
New in Pngcrush 1.7.59 (Jun 12, 2013)
- Show the acTL chunk in the chunk list in verbose output.
- Fixed several bugs reported by pornel at users.sf.net:
- Do not call png_set_benign_errors when PNG_BENIGN_ERRORS_SUPPORTED
- is not defined
- Renamed PNG_UNUSED() macro PNGCRUSH_UNUSED().
- Moved a closing bracket inside the PNGCRUSH_LOCO block.
- Moved the declaration of "new_mng" outside a PNGCRUSH_LOCO block.
- Put reference to "input_format" inside a PNGCRUSH_LOCO block.
- Moved declarations of mng_out and mngname inside a PNGCRUSH_LOGO block.
New in Pngcrush 1.7.58 (Jun 12, 2013)
- Do not enable reduce_palette by default for "-reduce", "-new", or "-old".
- It still is failing for some files.
New in Pngcrush 1.7.57 (Jun 8, 2013)
- Added "-new" option that turns on "-reduce" and "-force" which will be
- the default settings for version 1.8.0 and beyond.
- Added "-old" option that turns off "-reduce" and "-force" which are the
- current default settings.
- Updated copyright year for zlib-1.2.7-1.
- Reverted to libpng-1.5.15 to be able to read old PNG files with TOO FAR
- errors. This will of course only work with the embedded libpng.
New in Pngcrush 1.7.56 (Jun 8, 2013)
- Only use pngcrush_debug_malloc() and pngcrush_debug_free() if the result
- is going to be shown.
- Added PNG_PASS_ROWS, PNG_UNUSED, and other macro definitions, when building
- with libpng-1.4.x and older libpng versions.
- Multiplied rowbytes by 8/bit_depth when using the system library because
- we do not call png_read_transform_info(). This prevents a crash when
- reading sub-8-bit input files.
New in Pngcrush 1.7.53 (Jun 8, 2013)
- Removed plte_len stuff from the "To do" list because it is done.
- Shorten the indexed-PNG tRNS chunk length if it has more entries than the PLTE chunk.
New in Pngcrush 1.7.52 (Jun 8, 2013)
- Added license info for cexcept.h, libpng, and zlib.
- Added consideration of "zopfli" compression to the "To do" list.
- Fixed a typo that caused a cHRM chunk to be "found" if an iCCP chunk
- were present.
- Reset best_byte_count before trial loop.
- Revise global png_set_keep_unknown_chunks() calls to avoid a libpng16
- warning.
- Reset "intent" to "specified_intent" before trial loop.
- Reset "plte_len" to "specified_plte_len" before trial loop.
- Initialize length of each trial to 0x7fffffff so any untried method
- is not the "best method".
New in Pngcrush 1.7.51 (Jun 8, 2013)
- Added "-noreduce" option, in preparation for "-reduce" becoming the
- default behaviour in version 1.8.0. This turns off lossless bit depth,
- color type and palette reduction, and opaque alpha channel removal.
- Zero out the high byte of transparent color for color-type 0 and 2,
- when reducing from 16 bits to 8.
- Undefined a bunch of stuff in pngcrush.h that we do not use, saves about
- 100 kbytes of executable file size in addition to about 50k saved by
- undefining the simplified API.
- Fixed double-underscore typo in an #ifdef in png.c
- If "-reduce" is on and the background index is larger than the reduced
- palette_length+1, reduce it to the palette_length+1.
New in Pngcrush 1.7.50 (Mar 5, 2013)
- Removed completed items from the "To do" list.
- Ignore the argument of the "plte_len" argument and just set the "reduce_palette" flag.
New in Pngcrush 1.7.41 (Feb 14, 2013)
- Reverted to version 1.7.38. Versions 1.7.39 and 40 failed to open an output file.
New in Pngcrush 1.7.40 (Feb 14, 2013)
- Revised the "To do" list.
New in Pngcrush 1.7.39 (Feb 14, 2013)
- Removed "PNGCRUSH_COUNT_COLORS" blocks which I no longer intend to implement because that feature is already available in ImageMagick. Kept "reduce_to_gray" and "it_is_opaque" flags which I do hope to implement
- soon.
- Changed NULL to pngcrush_default_read_data in png_set_read_fn() calls, to fix an insignificant error introduced in pngcrush-1.7.14, that caused most reads to not go through the alternate read function. Also always set this function, instead of depending on STDIO_SUPPORTED.
New in Pngcrush 1.7.38 (Feb 14, 2013)
- Bail out of a trial if byte count exceeds best byte count so far.
- Added -bail and -nobail options. Use -nobail to get a complete report of filesizes.
- Added -blacken option, to enable changing the color samples of any fully-transparent pixels to zero in PNG files with color-type 4 or 6, potentially improving their compressibility.
New in Pngcrush 1.7.37 (Feb 14, 2013)
- Reverted pngcrush.c back to 1.7.35 and fixed the bug with PLTE handling.
New in Pngcrush 1.7.10 (May 21, 2011)
- Added missing "(...)" in png_get_uint_32().
- Only compile png_get_uint_32(), etc., when PNG_LIBPNG_VER < 1.2.9
- Revised help info for "-zitxt".
New in Pngcrush 1.7.9 (May 21, 2011)
- Defined TOO_FAR == 32767 in pngcrush.h (instead of in deflate.c)
- Revised the "nolib" Makefiles to remove reference to gzio.c and pnggccrd.c
New in Pngcrush 1.7.8 (May 21, 2011)
New in Pngcrush 1.7.7 (May 21, 2011)
- Updated bundled libpng to version 1.4.0.
- Check the "-plte_len n" option for out-of-range value of n.
- Changed local variable "write" to "z_write" in inffast.c (zlib-1.2.3.4)
- to avoid shadowed declaration warning
New in Pngcrush 1.7.6 (May 21, 2011)
- Change some "#if defined(X)" to "#ifdef X" according to libpng coding style.
- Added some defines to suppress pedantic warnings from libpng-1.2.41beta15
- and later. A warning about deprecated access to png_ptr->zstream is
- otherwise unavoidable. When building the embedded libpng, a warning
- about png_default_error() returning is also otherwise unavoidable.
- Write premultiplied alpha if output extension is .ppng and
- PNG_READ_PREMULTIPLIED_ALPHA_SUPPORTED is set (needs libpng-1.5.0).
- Check the "-m method" option for out-of-range method value.
New in Pngcrush 1.7.4 (May 21, 2011)
- Use unmodified pngconf.h from libpng-1.2.41beta05 or later.
New in Pngcrush 1.7.3 (May 21, 2011)
- Print contents of text chunks after IDAT, even when the -n option is used. This requires a slight modification of pngconf.h, when libpng-1.2.x is used.
New in Pngcrush 1.7.2 (May 21, 2011)
- Added check for "verbose" on some printf statements.
New in Pngcrush 1.7.1 (May 21, 2011)
- Revised some prototypes to eliminate "Shadowed Declaration" warnings.
- Moved warning about discarding APNG chunks to the end.
- Replaced *.tar.lzma with *.tar.xz in the distribution.
New in Pngcrush 1.6.10 (Apr 14, 2009)
New in Pngcrush 1.6.4 (Aug 25, 2007)
- Fixed bug in handling of undocumented -trns_a option (Michal Politowski).
- Fixed bug with "nosave" handling of unknown chunks.