Skip to content

Latest commit

 

History

History
136 lines (71 loc) · 5.55 KB

tools.md

File metadata and controls

136 lines (71 loc) · 5.55 KB

PNG Tools

A list of useful tools for reading, creating and modifying PNG files. This may be helpful for creating test images, or for analyzing files.

PNG manipulation tools (read/write)

Photomator

Homepage Mac application which can read and generate HDR PNG.

pngcrush

Homepage and maintained on sourceforge.

Used to recompress PNG, optionally remove chunks or add a few such as sRGB.

Depends on libpng. Author, Glenn Randers-Pehrson, is deceased, last update was 2017.

optipng

Homepage and maintained on sourceforge

Used to recompress PNG, including optionally reducing bit depth, changing color type, and reducing the palette.

Depends on libpng. Originally a fork of pngcrush by Cosmin Truta, now has a different feature set and has added GIF and BMP support.

OxiPNG

Homepage and maintained on GitHub

PNG compression optimizer, written in Rust. Recognizes cICP chunks and does not discard them.

Minimum viable PNG encoder, in Python

Homepage and maintained on GitHub.

By @DavidBuchanan314 Easily extensible to spit out new chunks, so great for prototyping and creating test files.

Depnds on zlib, only.

node pngdefry

Homepage

Repairs corruption in undisplayable Apple PNG icons which were extracted from iOS apps; removes CgBI chunk, converts premultiplied samples back to RGB, etc. Uses node.

SNG

Readme and maintained at axot/SNG

This is a textual format to represent PNG files, which can be edited and then converted back to PNG. Ancient code, depends on libpng so no support for APNG; and eXIf also is not supported by SNG, despite libpng support.

hdr4png

Readme and maintained at sandflow/hdr4png

This is a Python script by Pierre-Anthony Lemieux to add a specific iCCP chunk to PNG to signal BT.2100 PQ usage.

Checkers (read)

pngcheck

Homepage, no repo, source tarball.

Depends on libpng so currently no APNG support. Older versions bundled with some Linux distros have no eXIf support.

PNG file chunk inspector

Homepage and source at nayuki/ Nayuki-web-published-code/png-file-chunk-inspector/

Browser-based checker written in Javascript. No libpng dependency. Now supports APNG. Does not support other Third Edition chunks.

Chris Lilley had experimentally extended it to add cICP, APNG support (easy since it is all JavaScript).

fotoforensics

Homepage

Browser-based tool which displays hidden (by alpha channel, or by incorrect IHDR height) data in PNG (and other) images.

###MediaInfo

Homepage

Multi-platform GUI which displays metadata on many image and video formats including PNG. Recent builds support cICP, mDCv and cLLI.

Libraries

libpng

Maintained at pnggroup/libpng, although most of the issues are at the older GlennRP repo (issues).

This is the original, C, reference library. Depends on zlib. It supports reading and writing PNG files. It has been criticized for being hard to use, and difficult to extend.

Does not support APNG, or any of the Third Edition chunks

libspng

Homepage and maintained at randy408/libspng. There is documentation

A faster C library for reading and writing PNG. Does not depend on zlib (or libpng).

Does not support APNG (although that is planned) and there is an open PR which adds APNG support, or any of the Third Edition chunks, although there is an open issue on cICP support.

lodepng

Homepage and maintained on GitHub

C library and C++ wrapper by Lode Vandevenne.

pnger

Readme and maintained at masq/pnger

Python library for parsing PNG, mainly for forensic purposes.

Now supports APNG and Third Edition chunks.

PNG-library

Homepage and maintained at nayuki/PNG-library

This is a recent Java library for read and write.

Sixlegs Java PNG Decoder

Homepage and maintained on Google code.

Seems to support reading only.