pingy

PNG creation and manipulation helper

Usage no npm install needed!

<script type="module">
  import pingy from 'https://cdn.skypack.dev/pingy';
</script>

README

pingy

PNG creation and manipulation helper for node-pngjs.

Installation

$ npm install pingy

Usage

var Pingy = require('pingy');

Creation

Create a new, empty Pingy object of width 64px and height 48px:

var img = new Pingy(64, 48); // default color is black

Create a Pingy object from an existing pngjs object:

var img2 = new Pingy.fromPNG(obj);

Create a Pingy object from an array of sparse RGBA values:

var img3 = new Pingy.fromArray([
  [ { r: 255 }, { r: 128, b: 128 }, { g: 255, a: 192 } ],
  [ { b: 128 }, { b: 192 }, { b: 256 } ]
]);

Create a Pingy object from ASCII art:

// whatever *that* is supposed to be ...
var art = '' +
  'O------O\n' +
  '|      |\n' +
  '| **** |\n' +
  '|      |\n' +
  'O------O';

var img4 = new Pingy.fromAsciiArt(art, {
  'O': { r: 128 },
  '-': { b: 128 }
  // characters without mappings get a random color
});

Manipulation

Execute a function on each point of an image:

img.forEachPoint(function(x, y, rgba) {
  rgba.r = 256; // other RGBA values remain

  // optionally, returning an object here overrides the entire RGBA value
  return { r: 256 }; // solid red
});

Get the color at a point:

img.getColor(0, 0);
// returns { r:255, g:0, b:0, a:255 };

Set the color at a point by passing a sparse RGBA object:

img.setColor(0, 0, { g: 255, b: 128});
// returns { r: 255, g: 255, b: 128, a: 255 };

Enlarge an image linearly:

img.scale(10);

Utility

Get width of the image:

img.getWidth();
// returns 64

Get height of the image:

img.getHeight();
// returns 48

Get the base 64 representation of an image:

img.toBase64(function(base64) {
  // base64 string is passed to callback function
});

Get the base 64 string as a data URI:

img.toBase64Uri(function(base64) {
  // base64 data URI string is passed to callback function
  // data:image/png;base64, [...]
});

License

This software is released under the terms of the MIT license. See LICENSE.