Project Url: leonbloy/pngj
Introduction: PNGJ : pure Java library for high performance PNG encoding
More: Author   ReportBugs   OfficialWebsite   

PNGJ is a pure Java library for high performance reading and writing of PNG images


You can download the latest release from here or use the Maven Central repository

Main features

  • Very efficient in memory usage and speed
  • Pure Java (8 or greater)
  • Small and self contained. No dependencies on third party libraries, nor even on java.awt.* or javax.imageio.*
  • Runs on Android and GAE (Google App Engine)
  • Allows to read and write progressively, row by row. This means that you can process huge images without needing to load them fully in memory.
  • Reads and writes all PNG color models. Interlaced PNG is supported (though not welcomed) for reading.
  • Full support for metadata handling ("chunks").
  • The format of the pixel data (for read and write) is extensible and efficient (no double copies).
  • Supports asyncronous reading and low level tweaking and extension in the reader.
  • Basic support for APNG reading
  • Open source (Apache licence). Available in Maven Central repository.

What is this for?

This is a relatively low level library, its goal is to code and decode PNG images from/to raw pixels, optimizing memory usage and speed. It does not provide any high-level image processing (eg, resizing, colour conversions), it does not try to abstract the concrete PNG color model (as BufferedImage does, for example). In particular, the default format of the scanlines (as wrapped in ImageLineInt or ImageLineByte) is not abstract, the meaning of the values depends on the image color model and bitdepth.

More documentation

About Me
GitHub: Trinea
Facebook: Dev Tools