Lellansin / node-pnglib

Pure Javascript lib for generate PNG.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

node-pnglib NPM Version Build Status Coveralls Status

Pure Javascript lib for generate PNG, Node.js version for PNGlib.

Installation

npm install node-pnglib

Example

Test it with http server:

const http = require('http');
const PNGlib = require('node-pnglib');

http.createServer(function (req, res) {
  if(req.url == '/favicon.ico') return res.end('');

  // width 100, height 40
  let png = new PNGlib(100, 40);

  // from (0, 20)
  let lineIndex = png.index(0, 20);
  for (let i = 0; i < 100; i++) {
    // draw a line to (0, 75)
    png.buffer[lineIndex + i] = png.color('blue');
  }

  res.setHeader('Content-Type', 'image/png');
  res.end(png.getBuffer());
}).listen(3001);

Output:

line

Test with file:

const fs = require('fs');
const PNGlib = require('node-pnglib');

let png = new PNGlib(150, 150);
for (let i = 20; i < 100; i++) {
  for (let j = 20; j < 100; j++) {
    png.setPixel(i + 10, j + 25, '#cc0044');
    png.setPixel(i + 20, j + 10, '#0044cc');
    png.setPixel(i + 30, j, '#00cc44');
  }
}

fs.writeFileSync('./block.png', png.getBuffer());

Output:

line

Let's try to draw waves:

const http = require('http');
const PNGlib = require('node-pnglib');

http.createServer(function (req, res) {
  if(req.url == '/favicon.ico') return res.end('');

  let png = new PNGlib(100, 40);
  for (let i = 0, num = 100 / 10; i <= num; i += .01) {
    let x = i * 10;
    let y = Math.sin(i) * 10 + 20;
    png.setPixel(x, (y - 10), '#0000FF');
    png.setPixel(x, (y), '#FF0000');
    png.setPixel(x, (y + 10), 'rgb(0,255,0)');
  }
  res.setHeader('Content-Type', 'image/png');
  res.end(png.getBuffer());
}).listen(3001);

Output:

line

Benchmark

# Simple line

pnglib x 1,021 ops/sec ±3.37% (76 runs sampled)
pnglib-es6 x 3,293 ops/sec ±4.79% (79 runs sampled)
node-pnglib x 17,027 ops/sec ±0.93% (87 runs sampled)
Fastest is node-pnglib

node v8.1.1
MacBook Pro (Retina, 13-inch, Early 2015)
2.7 GHz Intel Core i5

It's faster than similar libraries. you can go to here for more benchmark infomation.

About

Pure Javascript lib for generate PNG.

License:Other


Languages

Language:JavaScript 100.0%