pngparse ======== `pngparse` is a pure-JavaScript library for [Node.JS](http://nodejs.org/) for converting a PNG file into an array of pixel values. It came out of a need for reading PNG images in Node.JS for the [Dark Sky API](http://developer.darkskyapp.com/), but all existing libraries either had compilation issues or did not support enough of the PNG standard to be practical. There's a reason nobody writes PNG-parsing libraries. This stuff is complicated and reinventing the wheel is dumb. But, if you're wondering whether you can trust it, it has a full unit test suite and we've been using it in production since Sep 2012, so there you go. It's reasonably complete, covering most PNG color types, depths, and filters; notable omissions are lack of support for 16-bit images and interlacing. Comments, bug fixes, feature improvements, etc. are all welcome. If you do write code, please ensure that you write tests for it! Usage ----- To install: npm install pngparse To use: var pngparse = require("pngparse") ... pngparse.parse(buffer, function(err, data) { if(err) throw err /* do things! */ }) ... pngparse.parseFile("path/to/file.png", function(err, data) { if(err) throw err /* do things! */ }) The `data` object returned from the callback bears a striking resemblance to the [HTML5 Canvas ImageData object](https://developer.mozilla.org/en-US/docs/DOM/ImageData). A notable distinction is that the object returns has a `channels` property which indicates how many color channels it uses (while an HTML5 ImageData object is always 4-channel). The possible color channel combinations are as follows: 1 channel : grayscale 2 channels: grayscale + alpha 3 channels: RGB 4 channels: RGBA If you use the `ImageData.prototype.getPixel` method, this is handled for you; however, if you access the `data` array manually, then you will have to be aware of it.