1ZopfliPNG is a command line program to optimize the Portable Network Graphics 2(PNG) images. This version has the following features: 3- uses Zopfli compression for the Deflate compression, 4- compares several strategies for choosing scanline filter codes, 5- chooses a suitable color type to losslessly encode the image, 6- removes all chunks that are unimportant for the typical web use (metadata, 7 text, etc...), 8- optionally alters the hidden colors of fully transparent pixels for more 9 compression, and, 10- optionally converts 16-bit color channels to 8-bit. 11 12This is an alpha-release for testing while improvements, particularly to add 13palette selection, are still being made. Feedback and bug reports are welcome. 14 15Important: 16 17This PNG optimizer removes ancillary chunks (pieces of metadata) from the 18PNG image that normally do not affect rendering. However in special 19circumstances you may wish to keep some. For example for a design using 20custom gamma correction, keeping it may be desired. Visually check in the 21target renderer after using ZopfliPNG. Use --keepchunks to keep chunks, e.g. 22--keepchunks=gAMA,pHYs to keep gamma and DPI information. This will increase 23file size. The following page contains a list of ancillary PNG chunks: 24http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html 25 26Build instructions: 27 28To build ZopfliPNG, compile all .c, .cc and .cpp files from src/zopfli, 29src/zopflipng and src/zopflipng/lodepng, except src/zopfli/zopfli_bin.c, to a 30single binary with C++, e.g.: 31g++ 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 32 33A makefile is provided as well, but only for linux: use "make zopflipng" with 34the Zopfli makefile. For other platforms, please use the build instructions 35above instead. 36 37The main compression algorithm in ZopfliPNG is ported from WebP lossless, but 38naturally cannot give as much compression gain for PNGs as it does for a more 39modern compression codec like WebP 40https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification. 41 42Compared to libpng -- an often used PNG encoder implementation -- ZopfliPNG uses 432-3 orders of magnitude more CPU time for compression. Initial testing using a 44corpus of 1000 PNGs with translucency, randomly selected from the internet, 45gives a compression improvement of 12% compared to convert -q 95, but only 0.5% 46compared to pngout (from better of /f0 and /f5 runs). 47 48By releasing this software we hope to make images on the web load faster without 49a new image format, but the opportunities for optimization within PNG are 50limited. When targeting Android, Chrome, Opera, and Yandex browsers, or by using 51suitable plugins for other browsers, it is good to note that WebP lossless 52images are still 26 % smaller than images recompressed with ZopfliPNG. 53 542013-05-07, Lode Vandevenne and Jyrki Alakuijala 55