Skip to content

Instantly share code, notes, and snippets.

@hideaki-t
Created July 16, 2011 17:22
Show Gist options
  • Save hideaki-t/1086562 to your computer and use it in GitHub Desktop.
Save hideaki-t/1086562 to your computer and use it in GitHub Desktop.
compositing multiple non-transparent images(graphs of munin)
var imgs = document.querySelectorAll('img[src*="netstat"]');
var c = document.createElement('canvas');
var c2 = document.createElement('canvas');
c.width = c2.width = imgs[0].width;
c.height = c2.height = imgs[0].height;
document.body.appendChild(c);
var ctx = c.getContext('2d');
var ctx2 = c2.getContext('2d');
var i = 0, n = imgs.length;
var f = function() {
ctx2.drawImage(imgs[i], 0, 0);
var imgData = ctx2.getImageData(0, 0, c2.width, c2.height);
var data = imgData.data;
var nn = data.length;
for (var pi = 0; pi < nn; pi += 4) {
var r = data[pi];
var g = data[pi+1];
var b = data[pi+2];
if (r == 255 && g == 255 && b == 255) {
data[pi+3] = 0;
}
}
ctx2.putImageData(imgData, 0, 0);
ctx.drawImage(c2, 0, 0);
if (++i != n) { setTimeout(f, 0); }
}
setTimeout(f,0);
var imgs = document.querySelectorAll('img[src*="netstat"]');
var c = document.createElement('canvas');
var c2 = document.createElement('canvas');
c.width = c2.width = imgs[0].width;
c.height = c2.height = imgs[0].height;
document.body.appendChild(c);
var ctx = c.getContext('2d');
var ctx2 = c2.getContext('2d');
for (var i = 0, n = imgs.length; i < n; i++) {
ctx2.drawImage(imgs[i], 0, 0);
var imgData = ctx2.getImageData(0, 0, c2.width, c2.height);
var data = imgData.data;
var nn = c2.width * c2.height * 4;
for (var pi = 0; pi < nn; pi += 4) {
var r = data[pi];
var g = data[pi+1];
var b = data[pi+2];
if (r == 255 && g == 255 && b == 255) {
data[pi+3] = 0;
}
}
ctx2.putImageData(imgData, 0, 0);
ctx.drawImage(c2, 0, 0);
}
var imgs = document.querySelectorAll('img[src*="netstat"]');
var n = imgs.length;
var c = document.createElement('canvas');
c.width = imgs[0].width;
c.height = imgs[0].height;
document.body.appendChild(c);
var ctx = c.getContext('2d');
ctx.globalAlpha = 0.5;
for (var i = 0; i < n; i++) {
ctx.drawImage(imgs[i], 0, 0);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment