			       pngmeta
			       =======

This small filter program extracts metadata from PNG images and
displays them as either HTML, SOIF, RDF/XML or simple fields and
values.

This software is distributed under the same copyright as the PNG
Reference Library (libpng), upon which some of this code is based --
see pngmeta.c for details.


Requirements
------------

* An ANSI C compiler -- preferrably gcc
* libpng (tested with 1.0.8)
* zlib   (tested with 1.1.4)

The latter two packages are available from http://www.libpng.org/pub/png/
andr many other places, see the PNG Home Page for details.


Installation
------------

Use the GNU configuration program:
    ./configure
    make

This package needs the libpng and zlib libraries and header files and
you have several ways to specify this if the above fails.

If you have installed these packages in the default places (libs in
usual lib path, includes under /usr/include), then they will be
automatically found.  

If you have compiled the packages but they remain in the source dirs,
use one of these options to configure:

  --with-png=DIR          DIR is root for libpng distribution
  --with-zlib=DIR         DIR is root for libz distribution

Note, this automatically happens the distributions are found in
nearby directories with these names:
  zlib-X.*    zlib   (subdirectories) or ../zlib
  libpng-X.*  libpng (subdirectories) or ../libpng

If the libraries and headers are installed in places that cannot be
found by configure, you can specify the individual libraries and
include paths with these options:

  --with-zlib-lib=LIB     LIB is path to libz.a
  --with-png-lib=LIB      LIB is path to libpng.a
  --with-png-includes=DIR DIR is path where PNG header files can be
                          found, defaults to /usr/include
  --with-zlib-includes=DIR DIR is path where ZLIB header files can be
                           found, defaults to /usr/include




OR If all of that fails, use the Makefile.old, Edit the ZLIB and
LIBPNG variables in the makefile to point to the zlib and libpng
installation directories.  Pick a C compiler (by default set for gcc)
and ranlib and then do a 'make -f Makefile.old'.


Testing
-------

Three test PNG images are provided:
  ct1n0g04.png ctzn0g04.png
    which contain uncompressed and compressed text chunks respectively.
    These are part of the PNG image test suite written by
    Willem A.J. van Schaik <gwillem@ntuvax.ntu.ac.sg>

  8859.png
    All the printable ISO 8859-1 Latin 1 characters from hex codes
    20 to 7E and A0 to FF provided by Chris Lilley <chris@w3.org>

and these are all checked when 'make check' is run


Usage Examples
--------------

mint% pngmeta goldhill.png 
pngmeta: PNG meta data for goldhill.png:
Title: GOLDHILL: Photo of hill in small European town.
Copyright: Unknown
Modification Time: 23 Apr 1995 01:15:08 +0000

mint% pngmeta --soif ct1n0g04.png 
@FILE { ct1n0g04.png
image-format{3}:	PNG
image-colors{1}:	4
image-width{2}:	32
image-height{2}:	32
image-type{25}:	Grayscale, non-interlaced
Title{8}:	PngSuite
Author{49}:	Willem A.J. van Schaik
(gwillem@ntuvax.ntu.ac.sg)
Copyright{43}:	Copyright Willem van Schaik, Singapore 1995
Description{239}:	A compilation of a set of images created to test the
various color-types of the PNG format. Included are
black&white, color, paletted, with alpha channel, with
transparency formats. All bit-depths allowed according
to the spec are present.
Software{48}:	Created on a NeXTstation color using "pnmtopng".
Disclaimer{9}:	Freeware.
}


See the manual page for more information on the options and usage.


Implementation
--------------

The program contains a new function png_skip_till_end() that takes up
the reading of the PNG data stream after the first IDAT has been
detected.  It then copies through, checking the CRCs of them but not
decompressing or processing them.  Finally, any remaining chunks are
processed in the standard fashion.


Copyright
---------

This code was modified from the code for png_read_end() from the
libpng library.  See pngmeta.c for the full copyright headers - they
have to remain in that file to comply with them.

I wrote the GNU automake/autoconf configuration files with the libpng
and zlib searching stuff and give permission for other people to use
it to autoconfigure png and zlib in their programs, as long as you
acknowledge me via my home page URI below.


Getting Latest Versions
----------------------

See the:
   PNG and MNG tools at SourceForge
   http://sourceforge.net/projects/pmt/

   CVS
   http://cvs.ilrt.org/cvsweb/png/pngmeta/


Thanks
------
... to Rick Rodgers <rodgers@nlm.nih.gov> for the manual page.
... to Dan Brickley <daniel.brickley@bristol.ac.uk> for RDF/XML
output idea.


Dave Beckett
Dave.Beckett@bristol.ac.uk
http://purl.org/net/dajobe/

