A suite to track Project Diva score statistics and ratings / D4DJ event data.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
projectdivar/server/node_modules/pngparse/README.md

65 lines
1.9 KiB

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.