pngcheck version 2.3.0 of 7 July 2007 This version adds a new ANSI-colorized-output option (probably optimized for dark-background xterms) and more informative output for interlaced images, such as: chunk IDAT at offset 0x000e1, length 8119 zlib: deflated, 32K window, default compression rows per pass: 9, 9, 9, 18, 17, 35, 34 // new summary line row filters (0 none, 1 sub, 2 up, 3 avg, 4 paeth): 0 0 2 4 2 2 4 0 0 | 0 0 3 1 4 4 2 0 2 | 0 4 2 2 2 // vertical bars 2 2 0 0 | 0 0 2 2 2 2 2 2 2 2 2 2 2 2 4 2 0 0 | 0 // separate passes 1 4 1 4 4 1 2 2 2 2 2 1 4 2 1 1 | 0 0 0 4 3 2 4 2 4 2 4 1 2 4 2 2 2 2 2 4 2 2 2 2 2 2 2 4 2 2 2 4 4 4 0 | 0 0 4 4 3 1 4 4 4 4 4 1 1 4 4 3 2 2 3 3 2 3 3 3 1 4 1 4 2 4 4 1 3 1 (131 out of 131) It also detects two more of the warning/error cases in brokensuite-20061204, bringing the total to 112 of the 114 files, and it fixes some minor problems with the output of some of the other cases. In addition, pngsplit now sup- ports MNG and JNG files, as originally claimed but not actually implemented (oops...). Here's a list of the major enhancements since version 1.98, which was the last release before I took over maintenance: - zlib support (to test the compressed stream and, optionally, to print out the image's row filters) - support for all remaining known PNG chunks (conformance) - complete support for all known MNG and JNG chunks (informational) - extended support for printing palettes (includes transparency info and histograms) - color support - improved error-checking - info on the compression factor of the image (expressed as a percentage, where 0% is no compression and 100% would be total compression; note that this can be negative since it counts PNG's chunk overhead against the compression factor) - png-fix-IDAT-windowsize utility - pngsplit utility - compilation support for Win32 (using MSVC), RISC OS, and Amiga There are also many fixes, of course, including ones from Tom Lane, Glenn Randers-Pehrson, Tom Zerucha, Paul Matzke, Darren Salt, John Bowler, and others. Thanks also to Chris Nokleberg (brokensuite), Tim Pritlove, Bob Friesenhahn, the GraalOnline folks, and others for test images. See the included CHANGELOG file for the complete, detailed list of who did what. Note that while MNG support is now complete in the sense of covering all registered chunk types, there are still numerous error conditions that pngcheck won't detect, plus a few non-error conditions that it will flag erroneously. Some of those can and will be fixed (particularly the latter class), but many of them involve complex interactions between different chunk types and would require virtually a full MNG decoder engine, something that is unlikely ever to happen in pngcheck. In other words, consider pngcheck a handy MNG debugging tool but not a full validator. Use it in conjunction with the MNG specification and a libmng-based viewer for best results. (PNG support, on the other hand, is pretty solid.) Also use zlib 1.2.x for best results--older versions failed to detect a number of invalid deflate/zlib conditions, including out-of-range LZ77 distance codes. I still hope to add support for EBCDIC-based systems (and perhaps UTF-16 and UTF-32-based ones, if there are any for which "char" defaults to more than 8 bits) someday, and the zlib support should be extended to include zTXt, iTXt, iCCP, etc. The code could also do a better job with chunks whose data exceed the buffer size; and in general, immense if-else blocks (e.g., > 3000 lines) are fairly nasty and should be rewritten. Someday... As always, see http://www.libpng.org/pub/png/apps/pngcheck.html for updates. Greg Roelofs http://pobox.com/~newt/greg_contact.html