12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- ZopfliPNG is a command line program to optimize the Portable Network Graphics
- (PNG) images. This version has the following features:
- - uses Zopfli compression for the Deflate compression,
- - compares several strategies for choosing scanline filter codes,
- - chooses a suitable color type to losslessly encode the image,
- - removes all chunks that are unimportant for the typical web use (metadata,
- text, etc...),
- - optionally alters the hidden colors of fully transparent pixels for more
- compression, and,
- - optionally converts 16-bit color channels to 8-bit.
- This is an alpha-release for testing while improvements, particularly to add
- palette selection, are still being made. Feedback and bug reports are welcome.
- Important:
- This PNG optimizer removes ancillary chunks (pieces of metadata) from the
- PNG image that normally do not affect rendering. However in special
- circumstances you may wish to keep some. For example for a design using
- custom gamma correction, keeping it may be desired. Visually check in the
- target renderer after using ZopfliPNG. Use --keepchunks to keep chunks, e.g.
- --keepchunks=gAMA,pHYs to keep gamma and DPI information. This will increase
- file size. The following page contains a list of ancillary PNG chunks:
- http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html
- Build instructions:
- To build ZopfliPNG, compile all .c, .cc and .cpp files from src/zopfli,
- src/zopflipng and src/zopflipng/lodepng, except src/zopfli/zopfli_bin.c, to a
- single binary with C++, e.g.:
- g++ src/zopfli/{blocksplitter,cache,deflate,gzip_container,hash,katajainen,lz77,squeeze,tree,util,zlib_container,zopfli_lib}.c src/zopflipng/*.cc src/zopflipng/lodepng/*.cpp -O2 -W -Wall -Wextra -Wno-unused-function -ansi -pedantic -o zopflipng
- A makefile is provided as well, but only for linux: use "make zopflipng" with
- the Zopfli makefile. For other platforms, please use the build instructions
- above instead.
- The main compression algorithm in ZopfliPNG is ported from WebP lossless, but
- naturally cannot give as much compression gain for PNGs as it does for a more
- modern compression codec like WebP
- https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification.
- Compared to libpng -- an often used PNG encoder implementation -- ZopfliPNG uses
- 2-3 orders of magnitude more CPU time for compression. Initial testing using a
- corpus of 1000 PNGs with translucency, randomly selected from the internet,
- gives a compression improvement of 12% compared to convert -q 95, but only 0.5%
- compared to pngout (from better of /f0 and /f5 runs).
- By releasing this software we hope to make images on the web load faster without
- a new image format, but the opportunities for optimization within PNG are
- limited. When targeting Android, Chrome, Opera, and Yandex browsers, or by using
- suitable plugins for other browsers, it is good to note that WebP lossless
- images are still 26 % smaller than images recompressed with ZopfliPNG.
- 2013-05-07, Lode Vandevenne and Jyrki Alakuijala
|