convolve

Canvas convolution filters

npm install convolve
1 downloads in the last day
2 downloads in the last week
15 downloads in the last month

convolve

Canvas convolution filter.

API

convolve(matrix)

Return a new convolution Filter with the given matrix.

Filter#factor(n)

Change the factor to n, defaults to 1.

Filter#bias(n)

Change the bias to n, defaults to 0.

Filter#width(n)

Canvas width.

Filter#height(n)

Canvas height.

Filter#apply(input, result)

Apply the convolution filter to the input ImageData, populating the result ImageData. This is a lower-level method, you most likely want to apply to the entire canvas, in which case use below:

Filter#canvas(canvas)

Apply the convolution filter to the entire canvas and immediately draw the results.

Example

var convolve = require('convolve');
var canvas = document.querySelector('canvas');
var ctx = canvas.getContext('2d');

var img = new Image;
img.onload = draw;
img.src = 'maru.jpg';

var sharpen = [
  [-1, -1, -1],
  [-1, 9, -1],
  [-1, -1, -1]
];

var blur = [
  [0, .2, 0],
  [.2, .2, .2],
  [0, .2, 0],
];

// factor 1 / 7
var motionBlur = [
  [1, 0, 0, 0, 0, 0, 0],
  [0, 1, 0, 0, 0, 0, 0],
  [0, 0, 1, 0, 0, 0, 0],
  [0, 0, 0, 1, 0, 0, 0],
  [0, 0, 0, 0, 1, 0, 0],
  [0, 0, 0, 0, 0, 1, 0],
  [0, 0, 0, 0, 0, 0, 1]
];

var edges = [
  [0, -1, 0],
  [-1, 4, -1],
  [0, -1, 0]
];

function draw() {
  canvas.width = img.width;
  canvas.height = img.height;
  ctx.drawImage(img, 0, 0);
  convolve(motionBlur)
    .factor(1 / 7)
    .canvas(canvas);
}

License

MIT

npm loves you