在 NodeJS 中使用 GM (GraphicsMagick) 我想通过使用带有诸如 drawPoint 之类的命令的循环来设置像素数据来生成一些图像内容,但是我不确定这样做的最佳实践。
我用循环测试过的代码可以工作,但是它非常慢,因为它每次设置像素时都会加载并保存图像。
这是我的测试,它生成随机 rgb 噪声。如何临时存储通过循环设置的图像数据,然后仅在完成后保存?
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) {});
}
}