Using GM (GraphicsMagick) in NodeJS I wanted to generate some image content via using loops with commands such as drawPoint to set pixel data however i am not sure on the best practice to do so.
The code i have tested with loops works however it is very slow since it loads and saves the image each time it sets a pixel.
Here is my test which generates random rgb noise. How can i temporarily store image data which is set via a loop and then save it only after it has finished?
var fs = require('fs');
var gm = require('gm').subClass({imageMagick: true});
var w = 200;
var h = 200;
gm(200, 200, '#ddff99f3').write('./Random Noise.png', function (err) {});
var row = 0;
var col = 0;
var r = 0;
var g = 0;
var b = 0;
function rgb(r, g, b){
r = Math.floor(r);
g = Math.floor(g);
b = Math.floor(b);
return ['rgb(',r,',',g,',',b,')'].join('');
}
for (row = 0; row < h; row++){
for (col = 0; col < w; col++){
r = Math.floor((Math.random() * 255) + 1);
g = Math.floor((Math.random() * 255) + 1);
b = Math.floor((Math.random() * 255) + 1);
gm('./Random Noise.png')
.fill(rgb(r,g,b))
.drawPoint(col, row)
.write('./Random Noise.png', function (err) {});
}
}