pngcheck 2.3.0 released

Greg Roelofs <[email protected]> Sun, 8 Jul 2007 23:08:56 -0700
Newsgroups gmane.comp.graphics.png.announce
Message-ID <[email protected]>
I just finished uploading pngcheck 2.3.0 to various places and updating
its web page (though not its freshmeat page, yet).  Here are the changes:

 * 20070211 GRR: extended pngsplit file-signature recognizer to support MNG and
 *               JNG (as claimed in help screen)
 * 20070704 GRR: cleaner fix for narrow interlaced images (account for missing
 *               passes); added rows per pass for interlaced images; added
 *               pass-separators in -vv row-filter output; added -c option for
 *               ANSI colors (filenames, chunk names, row filters, error/OK);
 *               alphabetized options on usage screen; made const string-arrays
 *               const
 * 20070707 GRR: fixed 64-bit ptrdiff_t printf() issue (%td); added check for
 *               NULLs (and "discouraged" chars) in tEXt; added check for zero
 *               values in sCAL; fixed error cascade for private interlace
 *               method; fixed non-verbose-mode IDAT/PLTE message

I find the color output makes it considerably easier to parse some of the
info, but it's difficult to show here, and it's not even tested on a light-
background terminal.  (Looks great on a black background, though. ;-) )
Here's an uncolored demo of the new interlacing hints, though (in the IDAT
section):

% pngcheck -vv pngtest.png
File: /util/graphics/libpng/pngtest.png (8574 bytes)
  chunk IHDR at offset 0x0000c, length 13
    91 x 69 image, 32-bit RGB+alpha, interlaced
  chunk gAMA at offset 0x00025, length 4: 0.45455
  chunk sBIT at offset 0x00035, length 4
    red = 5 = 0x05, green = 5 = 0x05, blue = 5 = 0x05, alpha = 5 = 0x05
  chunk bKGD at offset 0x00045, length 6
    red = 0x00e0, green = 0x00e0, blue = 0x0080
  chunk oFFs at offset 0x00057, length 9: 0x0 micrometers offset
  chunk pCAL at offset 0x0006c, length 44: equation type 0
    physical_value = p0 + p1 * original_sample / (x1-x0)
    calibration name = bogus units
    physical_value unit name = foo/bar
    x0 = 0
    x1 = 65535
    p0 = 1.0e0
    p1 = 65.535e3
  chunk pHYs at offset 0x000a4, length 9: 2834x2834 pixels/meter (72 dpi)
  chunk tIME at offset 0x000b9, length 7:  7 Jun 1996 17:58:08 UTC
  chunk tEXt at offset 0x000cc, length 9, keyword: Title
  chunk IDAT at offset 0x000e1, length 8119
    zlib: deflated, 32K window, default compression
    rows per pass: 9, 9, 9, 18, 17, 35, 34
    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
      2 2 0 0 | 0 0 2 2 2 2 2 2 2 2 2 2 2 2 4 2 0 0 | 0
      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)
  chunk zTXt at offset 0x020a4, length 198, keyword: Description
  chunk IEND at offset 0x02176, length 0
No errors detected in pngtest.png (12 chunks, 65.9% compression).

Of course, if you're not actively debugging the gcc MMX code, perhaps that
won't be quite as exciting to the rest of you. ;-)

The initial upload included Linux/x86 binaries; I'll see about cross-compiling
some win32 binaries "shortly."

Greg

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/