optiPNG历史

OptiPNG修订历史记录 #

==========================

Legend


++ Added or improved performance-related feature (might improve compression ratio or processing speed).

  • Added or improved feature.
  • Removed feature. ! Fixed bug. !! Fixed critical bug (crash, data/metadata loss or security hazard).
  • Other modification (e.g. architectural improvement).

Version 0.7.8 2023-nov-03 #

  • Upgraded libpng to version 1.6.40.
  • Upgraded zlib to version 1.3-optipng.
  • Upgraded cexcept to version 2.0.2-optipng. !! Fixed a global-buffer-overflow vulnerability in the GIF reader. [Reported by Zeng Yunxiang; fixed by Thomas Hurst] ! Fixed a stack-print-after-scope defect in the error handler. ! Fixed an assertion failure in the image reduction module. ! Fixed the command-line wildargs expansion in the Windows port.
  • Raised the minimum required libpng version from 1.2.9 to 1.6.35.
  • Raised the minimum required zlib version from 1.2.1 to 1.2.8.
  • Refactored the structured exception handling.

Version 0.7.7 2017-dec-27 #

  • Upgraded libpng to version 1.6.34.
  • Upgraded zlib to version 1.2.11-optipng.
  • Upgraded minitiff to version 0.2. !! Fixed a buffer overflow vulnerability in the GIF decoder. [Reported by Joonun Jang] !! Fixed an integer overflow vulnerability in the TIFF decoder. [Reported by Jaeseung Choi] ! Fixed the build on macOS High Sierra. [Reported by various users] [Fixed by Yuen Ho Wong and Friedrich Preuss] ! Fixed the build on DJGPP.
  • Disallowed out-of-bounds values in rangeset options.

Version 0.7.6 2016-apr-03 [Released by Ramona C. Truta] #

  • Upgraded libpng to version 1.6.21. ! Fixed an assertion failure in the image reduction code. [Fixed by upgrading libpng] !! Fixed various security-sensitive defects in the BMP decoder. [Reported by Henri Salo and Hans Jerry Illikainen] [Fixed by Ramona C. Truta] ! Fixed a benign uninitialized memory read in the GIF decoder. [Reported by Gustavo Grieco] ! Fixed a build failure occurring under the Estonian (et_EE) locale. [Reported by Sebastian Pipping] [Fixed by Priit Laes] ! Fixed a build failure occurring on Mac OS X, FreeBSD, and possibly other systems that lack POSIX-compliant high-resolution timestamps. [Reported by Ryan Schmidt and Dmitry Egorov] [Contributed by Sebastian Pipping] ! Fixed a typo causing build failures in 32-bit ANSI C compilation. [Reported by various users]

Version 0.7.5 2014-mar-24 #

  • Upgraded libpng to version 1.6.10-optipng.
  • Upgraded zlib to version 1.2.8-optipng. ! Fixed various build issues with libpng-1.5 and libpng-1.6. [Fixed by Oliver Schneider]
  • Allowed the handling of huge image files (> millions of pixels per row or column) to be independent of the libpng version.
  • Allowed the option -preserve to save the file ownership (UID/GID) on Unix. [Requested by Otto Kekäläinen] ! Fixed a build issue with Clang.
  • Added various enhancements to the configure script.

Version 0.7.4 2012-oct-21 #

!! Fixed the previous fix, which failed to fix the option -fix. [Reported by Gynvael Coldwind and Mateusz Jurczyk]

Version 0.7.3 2012-sep-16 #

!! Fixed a use-after-free vulnerability in the palette reduction code. This vulnerability was accidentally introduced in version 0.7.

Version 0.7.2 2012-aug-24 #

  • Upgraded libpng to version 1.4.12.
  • Upgraded zlib to version 1.2.7-optipng. ! Fixed the display of huge (4GB+) file/IDAT sizes on 32-bit platforms. ! Issued a proper error message if the output IDAT can’t fit in 2GB. Acknowledged this limitation in the user manual. [Reported by John Sauter] ! Fixed the output file cleanup that should occur after a write error.
  • Added the option -debug and various undocumented debug features.
  • Moved the PNG reduction module (opngreduc) to a separate sub-project.

Version 0.7.1 2012-mar-19 [Released by Ramona C. Truta] #

!! Fixed a regression in the reduction of palette-encoded grayscale images. (This regression was introduced in version 0.7.) [Fixed by Adam Ciarcinski]

Version 0.7 2012-feb-29 [Released by Cosmin & Ramona C. Truta] #

  • Upgraded libpng to version 1.4.9.
  • Upgraded zlib to version 1.2.6-optipng. !! Fixed a rarely-occurring out-of-bounds memory access error in the Z_RLE strategy in zlib. [Reported by Christopher Wichura] [Fixed by upgrading zlib]
  • Added the popularly-requested option -strip. The only suboption currently supported is “-strip all”.
  • Added the option -clobber. [Contributed by Maciej Pilichowski]
  • Added the option -backup, as an alias of -keep. [Contributed by Ramona C. Truta]
  • Added the option -silent, as an alias of -quiet. [Contributed by Ramona C. Truta]
  • Deprecated the option -log. [Contributed by Ramona C. Truta]
  • Changed the activity display output from STDOUT to STDERR.
  • Allowed the option -preserve to save high-resolution timestamps on Unix, if the POSIX-1.2008 API is available. (This feature was previously available on Windows only.) ! Fixed a minor precision error in the display of file size percents. ! Fixed a memory leak that occurred when reading broken GIF images. ! Fixed various build issues. [Fixed by Sebastian Pipping and Ville Skyttä]
  • Resolved all remaining compatibility issues with libpng-1.5. [Contributed by Adam Ciarcinski]
  • Added build support for clang.
  • Reorganized the source directory structure.

Version 0.6.5 2011-jan-24 #

  • Upgraded libpng to version 1.4.5-optipng.
  • Upgraded zlib to version 1.2.5-optipng. !! Fixed the I/O states (in libpng 1.4.5); they caused incorrect file reads in some rare cases. [Reported by Dmitry Marakasov] !! Fixed processing of PNG files with chunks of size 0. [Reported by Matthew Fearnley] ! Fixed a display error in the TIFF import. [Fixed by Piotr Bandurski]
  • Improved checking of the arguments of -f, -zc, -zm and -zs.
  • Removed quirks from the rangeset option argument syntax. ! Fixed a build issue under the system-supplied libpng-1.4. [Fixed by Petr Gajdos]
  • Resolved forward-compatibility issues regarding libpng-1.5; however, the system-supplied libpng-1.5 is not yet supported.
  • Added various enhancements to the configure+make build system. [Contributed by Elias Pipping and Dmitri Zubko]

Version 0.6.4 2010-mar-14 #

  • Upgraded libpng to version 1.4.1-optipng.
  • Upgraded zlib to version 1.2.4-optipng.
  • Added the option -nx.
  • Clarified the behavior of the option -nz and the relationship between the options -nz and -o0.
  • Added a filesystem check (resolving normalized paths, symlinks, etc.) to better detect when the output overwrites the input.
  • Enabled automatic wildcard expansion (i.e. globbing) on Win64. ! Fixed a Unicode build issue on Windows. [Fixed by Fabien Barbier]

Version 0.6.3 2009-may-18 #

  • Upgraded libpng to version 1.2.36-optipng. !! Fixed a use-after-free error in the GIF reader. [Reported by Roy Tam] [Fixed by Bryan McQuade] ! Flushed the output log to display the current trial in real time. This only worked on Windows in the previous version. [Fixed by Vincent Lefèvre] ! Fixed an error in reporting unrecognized file formats.
  • Removed the requirement to “fix” TIFF files that contain unrecognized metadata. [Requested by Piotr Bandurski]
  • Simplified the option abbreviation rules. Option names can now be abbreviated to their shortest unique prefix, as in X11 applications.

Version 0.6.2 2008-nov-09 #

  • Upgraded libpng to version 1.2.33-optipng. ++ Put back a speed optimization, accidentally removed in version 0.6, allowing singleton trials (-o1) to be bypassed in certain conditions. !! Fixed an array overflow in the BMP reader. !! Fixed the loss of private chunks under the option -snip.
  • Produced a more concise on-screen output in the non-verbose mode. [Contributed by Vincent Lefèvre]
  • Added a programming interface to the optimization engine, in order to facilitate the development of PNG-optimizing GUI apps and plugins.

Version 0.6.1 2008-jul-20 #

  • Upgraded cexcept to version 2.0.1.
  • Added a configure script, to be used instead of unix-secure.mak. ! Fixed a build issue that occurred when using libpng from the system. [Reported by Nelson A. de Oliveira] ! Fixed the processing when the image reduction yields an output larger than the original. [Reported by Michael Krishtopa] ! Fixed the behavior of the option -preserve. [Reported by Bill Koch]
  • Removed displaying of partial progress when abandoning IDATs under the option -v. (The percentages displayed were not very accurate.)

Version 0.6 2008-jun-15 #

  • Upgraded libpng to version 1.2.29-optipng. ++ Implemented grayscale(alpha)-to-palette reductions. ++ Improved conversion of bKGD info during RGB-to-palette reductions. [Contributed by Matthew Fearnley] !! Fixed conversion of bKGD and tRNS during 16-to-8-bit reductions. [Reported by Matthew Fearnley]
  • Added support for compressed BMP (incl. PNG-compressed BMP, you bet!)
  • Improved the speed of reading raw PNM files.
  • Recognized PNG digital signatures (dSIG) and disabled optimization in their presence, to preserve their integrity.
  • Allowed the user to enforce the optimization of dSIG’ed files.
  • Recognized APNG animation files and disabled reductions to preserve their integrity.
  • Added the option -snip, to allow the user to snip one image out of a multi-image file, such as animated GIF, multi-page TIFF, or APNG.
  • Improved recovery of PNG files with incomplete IDAT. !! Fixed a crash triggered by the use of -log on some platforms. [Fixed by Stefan Brüns] ! Fixed the behavior of the options -out and -dir when the input is already optimized. [Reported by Christian Davideck]
  • Provided more detailed image information at the start of processing.
  • Provided a more detailed summary at the end of processing, under the presence of the option -v and/or the occurrence of exceptional events.

Version 0.5.5 2007-jan-28 #

  • Upgraded libpng to version 1.2.15-optipng. ++ Used a previously-missed RGB-to-palette reduction opportunity for images containing 256 distinct colors. [Reported by Joachim Kluge] !! Fixed conversion of bKGD info during RGB-to-palette reductions. [Reported by Matthew Fearnley] ! Fixed pre-computation of iterations. [Reported by Matthew Fearnley] ! Eliminated a false alarm when processing RGB images with tRNS in Unix-secure mode. [Reported by Till Maas] [Fixed by Nelson A. de Oliveira] ! Fixed the behavior of the options -out and -dir when changing interlacing. [Reported by Martin Packman] ! Fixed the behavior of “-dir [DRIVE]:” on Windows.

Version 0.5.4 2006-aug-11 #

  • Added the options -out and -dir, to specify the name of the output file or directory. [Requested by Alexander Lucas]
  • Added support for builds based on the system-supplied libpng. [Contributed by Nelson A. de Oliveira]

Version 0.5.3 2006-jul-23 #

  • Upgraded libpng to version 1.2.12-optipng.
  • Implemented basic support for TIFF (grayscale, RGB and RGBA, uncompressed). ++ Avoided the redundant trial when the search space is singular (e.g. when running “optipng -o1 example.tif”).
  • Prevented accidental file corruption when using the option -log. ! Fixed (again) a small typo in the online help.

Version 0.5.2 2006-may-07 #

  • Improved handling of inexact PNM-to-PNG conversions. ! Fixed a typo that was breaking the build on some Unix platforms. [Reported by Aaron Reitz]

Version 0.5.1 2006-apr-30 #

++ Implemented bit depth reduction for palette images.

  • Upgraded libpng to version 1.2.10-optipng.
  • Improved the BMP support.
  • Added a Unix man page. [Contributed by Nelson A. de Oliveira]
  • Allowed abbreviation of command-line options.
  • Changed the option -log to accept a file name as an argument.
  • Renamed the option -no to -simulate. ! Fixed an error in handling .bak files on Unix. [Reported by Adam Szojda and Nelson A. de Oliveira] ! Fixed a small typo in the help screen. [Reported by A. Costa and Nelson A. de Oliveira]

Version 0.5 2006-jan-14 #

++ Added pngxtern, a libpng add-on for external image format support: BMP (uncompressed), GIF, PNM. ++ Implemented RGB(A)-to-palette reductions.

  • Upgraded zlib to version 1.2.3-optipng.
  • Upgraded libpng to version 1.2.8-optipng.
  • If trials are ended prematurely, detailed progression is only reported under the option -v.
  • Removed reporting of some IDAT sizes that exceeded the optimum. (This was NOT a bug, but a “feature” that confused some users.) ! Fixed an RGB-to-gray reduction problem that occurred under some specific background colors.
  • Added support for builds based on the system-supplied zlib. [Requested by Nelson A. de Oliveira]
  • Modified LICENSE. It is now a verbatim spell of the zlib license.

Version 0.4.8 2005-may-10 #

  • Upgraded libpng to version 1.0.18-optipng. !! Fixed a palette-to-gray reduction problem that occurred when an RGB triple had both an alpha below max, and an alpha equal to max. [Reported by Nicolas Le Gland]
  • Packed the Windows executable using UPX.

Version 0.4.7 2004-oct-30 #

!! Fixed a palette-to-gray reduction problem that occurred when having more than one alpha value per RGB triple. [Reported by Larry Hastings] ! Fixed the progress display, when processing very large images.

  • Displayed the image info at the beginning of processing. ++ Reduced the IDAT buffer size, allowing abandoned trials to terminate earlier in some circumstances.
  • Implemented error recovery, when PLTE is too small, and/or tRNS is too large.

Version 0.4.6 2004-oct-25 #

  • Upgraded zlib to version 1.2.2-optipng.
  • Upgraded libpng to version 1.0.17-optipng. This provides safe handling of some ill-formed PNG images.
  • Rewrote makefiles.
  • Added project workspace to build under Visual C++ 6.0, integrated with memory leak detection. ++ Implemented a premature termination of trials, in the moment when IDAT grows beyond the smallest size previously achieved. [Requested by Larry Hastings]
  • Changed the order of trials, to perform the trials that are more likely to yield a smaller IDAT, at the beginning.
  • Added the option -full to avoid the premature termination of trials; useful for debugging.

Version 0.4.5 2004-may-31 #

  • Upgraded zlib to version 1.2.1.f-cos2.
  • Upgraded libpng to version 1.0.15-cos2.
  • Renamed the option -nx to -nz.
  • Added the option -preserve to preserve file attributes (file mode, time stamp, etc.) where applicable. [Requested by Nehal Mistry] ! Fixed an incorrect initialization of zlib window bits. ! Displayed an error message when the search space was invalid. !! Fixed a palette reduction problem for bit depths below 8. ! Eliminated memory leaks. [Contributed by Niels de Koning]

Version 0.4.4 2003-nov-20 #

  • Upgraded zlib to version 1.2.1. ++ Added support for the Z_RLE strategy.

Version 0.4.3 2003-aug-12 #

! Fixed a reduction problem that caused an assertion failure. [Reported by Dimitri Papadopoulos]

Version 0.4.2 2003-jun-30 #

++ Enhanced the support for palette size reductions: trailing sterile palette entries are removed even when the bit depth is below 8. ! Enforced recompression when the new IDAT has the same size, but other chunks have been reduced.

  • Displayed the IDAT size difference as a percentage. [Requested by Nehal Mistry]

Version 0.4.1 2003-may-19 #

! Fixed the removal of trailing sterile palette entries.

Version 0.4 2003-may-12 #

++ Added support for palette-to-gray reductions. ++ Added partial support for palette size reductions. ! Fixed the reporting of invalid command-line options. ! Eliminated a spurious warning when the zlib window size is set to 256.

Version 0.3.2 2003-mar-11 #

  • Added support for updating sBIT during reductions. ! Fixed the reduction of the alpha channel.

Version 0.3.1 2003-feb-25 #

! Fixed the encoding of interlaced images when they become larger than the input. [Reported by James H. Cloos, Jr.]

  • Added the HISTORY document (this file).

Version 0.3 2003-feb-24 #

  • Announced the first public release of OptiPNG. ++ Added support for iterating through zlib memory levels. ++ Added support for collapsing IDAT, avoiding calls to png_set_compression_buffer_size(). This reduces the memory requirements. ++ Added support for lossless reduction of the image type: RGB[A] -> G[A], RGBA -> RGB, GA -> G
  • Added many user options.
  • Added documentation.

Version 0.2 2001-dec-27 #

  • Added support for optimization level presets.
  • Added a user option for changing the interlacing.

Version 0.1 2001-dec-17 #

  • Added support for chunk I/O status annotation. This improves the speed of OptiPNG significantly.
  • Added structured exception handling via cexcept.

Version 0.0.1 2001-dec-10 #

  • Introduced OptiPNG. ++ Compressed PNG IDAT data repeatedly, iterating through zlib compression and strategy levels, as well as PNG delta filters.