A parser/exporter for the greatest image format ever created.
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



This code implements a streaming parser/serializer for ascii PPM formatted images in JavaScript. The PPM file format is very simple and human readable, so it can be useful when debugging graphics applications. The downside though is that PPM is not a very efficient format, and so it is not really suitable for long term archival or transmission of images. For those applications, you should use a standard network image format like PNG or JPEG, depending on your requirements.


To install, first you do:

npm install ppm

And here is how you can use it to write/read back an image:

var ppm = require("ppm");

var image = [
  [[255, 0, 0], [255, 0, 0], [255, 0, 0]],
  [[0, 255, 0], [0, 255, 0], [0, 255, 0]],
  [[0, 0, 255], [0, 0, 255], [0, 0, 255]]

ppm.parse(ppm.serialize(image), function(err, img) {
  console.log(err, img);

The API is streaming, and should be compatible with all the stand node.js features from fs/net/etc..

ppm.parse(stream, cb(err, result))

Parses an ASCII ppm file from stream. When finished, calls cb with the error and result of parsing the file. result will be an array of arrays of the form

    [[r, g, b], [r, g, b], ...]


Converts an array of arrays (RGB data; see above fo rformat) representing an image into an ASCII ppm stream.


(c) 2013 Mikola Lysenko. BSD