
OptiPNG - TO-DO list
====================

- Compression improvements:
  Use zlib's deflateTune().
  Use 7zip's powerful deflation engine.
  (This is not possible with libpng, so a custom encoder is needed.)

- Speed improvements:
  Avoid repeated filtering when trying a filter value more than once.
  (This is not possible with libpng, so a custom encoder is needed.)

- Text chunk optimization:
  Smart selection between tEXt and zTXt.  Similarly for iTXt.

- More file recovery features.

- Input from stdin; output to stdout.

- Optimization of an entire directory, with and without subdirectory
  recursion:
    optipng dir/
    optipng -recurse dir/
  Currently it is possible to optimize an entire directory as:
    optipng dir/*.png
  provided that file globbing works, either at the shell level (Unix)
  or in the program (linked with wildargs.obj on Windows).

- Improved support for reading external image formats
  (e.g. compressed TIFF or other image formats).

- Support for conversion to a desired bit depth and color type:
    optipng -b16 -c6 ...

- Support for handling metadata, e.g.:
    optipng -meta set:tEXt=<keyword>,<text>     # add/update chunk
    optipng -meta set:sRGB=0                    # add/update chunk
    optipng -meta select:all                    # keep all chunks
    optipng -meta reject:all                    # delete all chunks
    optipng -meta select:std2003                # keep all standard chunks
    optipng -meta select:public                 # keep all public chunks
    optipng -meta reject:private                # delete all private chunks
    optipng -meta reject:hIST,sPLT              # delete hIST and sPLT
    optipng -meta select:visual                 # keep gAMA, cHRM, sRGB, ...
    optipng -meta reject:visual                 # delete gAMA, cHRM, sRGB, ...
    optipng -meta select:textual                # keep tEXt, zTXt, iTXt
    optipng -meta reject:textual                # delete tEXt, zTXt, iTXt
    optipng -meta reject:gif                    # delete gIFg, gIFt, gIFx
    optipng -meta load:<file>                   # load chunks from file
    optipng -meta store:<file>                  # store chunks in file

- Parallelization on multi-processor/multi-core machines.

- A shared library (e.g. optipng.dll), to facilitate the development of
  PNG-optimizing GUI applications and plugins.

