Node.js 节点GM(GraphicsMagick)-基于循环的图像生成
在NodeJS中使用GM(GraphicsMagick),我想通过使用drawPoint等命令的循环来生成一些图像内容,以设置像素数据,但我不确定这样做的最佳实践 我用循环测试的代码可以工作,但是速度非常慢,因为每次设置像素时都会加载并保存图像 这是我的测试,它会产生随机的rgb噪声。如何临时存储通过循环设置的图像数据,然后仅在完成后保存Node.js 节点GM(GraphicsMagick)-基于循环的图像生成,node.js,loops,imagemagick,gm,Node.js,Loops,Imagemagick,Gm,在NodeJS中使用GM(GraphicsMagick),我想通过使用drawPoint等命令的循环来生成一些图像内容,以设置像素数据,但我不确定这样做的最佳实践 我用循环测试的代码可以工作,但是速度非常慢,因为每次设置像素时都会加载并保存图像 这是我的测试,它会产生随机的rgb噪声。如何临时存储通过循环设置的图像数据,然后仅在完成后保存 var fs = require('fs'); var gm = require('gm').subClass({imageMagick: true});
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) {});
}
}
var fs=require('fs');
var gm=require('gm')。子类({imageMagick:true});
var w=200;
var h=200;
gm(200200,#ddff99f3').write('./Random Noise.png',function(err){});
var行=0;
var-col=0;
var r=0;
var g=0;
var b=0;
函数rgb(r、g、b){
r=数学楼层(r);
g=数学楼层(g);
b=数学楼层(b);
return['rgb(',r',',',g',',',b',)'];
}
对于(行=0;行
我对node.js的gm了解不够,无法提供任何答案,因此这更像是一个开放的评论,让您走上正确的道路
convert -size 200x200 xc:'#ddff99f3' -fx 'rand()' 'Random Noise.png'
var raster=[],
指数=0;
对于(行=0;行
导入此命令的CLI命令类似于
cat raster.dat | convert -size 200x200 -depth 8 rgb:- 'Random Noise.png'
我想文档会将上述内容称为“流”和“管道”希望其他人能够提供node gm示例。感谢您的帮助,-fx命令似乎不可用。命令列表发布在此处:-fx是一个Imagemagick命令,在GraphicsMagick中可能不可用。我不使用GraphicsMagick,所以不能肯定,但它可能在那里列出了一个稍微不同的名称。另一种方法可能是创建背景图像,然后使用-draw(Imagemagick)在不同位置插入点列表。