Javascript 如何使用PNGJS库从rgb矩阵创建png?

Javascript 如何使用PNGJS库从rgb矩阵创建png?,javascript,node.js,image-processing,png,Javascript,Node.js,Image Processing,Png,我很难从这里的文档中找到创建PNG文件(编码)的方法。文档给出了一个操作现有PNG的示例为了检查是否正常,我一直在尝试给每个像素赋予相同的RGB值。我认为这篇文章也是相关的。这是我试过的密码 var pic = new PNG({ width: cols, height: rows }); console.log(pic.width, pic.height); var writeStream = fs.createWriteStream('C:\\Users\\yako\\de

我很难从这里的文档中找到创建PNG文件(编码)的方法。文档给出了一个操作现有PNG的示例
为了检查是否正常,我一直在尝试给每个像素赋予相同的RGB值。我认为这篇文章也是相关的。这是我试过的密码

var pic = new PNG({
    width: cols,
    height: rows
});
console.log(pic.width, pic.height);

var writeStream = fs.createWriteStream('C:\\Users\\yako\\desktop\\out.png');
pic.pack().pipe(writeStream);
writeStream.on('parsed', function() {
    console.log('parsed');
});
writeStream.on('finish', function() {
    fs.createReadStream('C:\\Users\\yako\\desktop\\out.png')
    .pipe(new PNG({
        filterType: -1
    }))
    .on('parsed', function() {

        for (var y = 0; y < this.height; y++) {
            for (var x = 0; x < this.width; x++) {
                var idx = (this.width * y + x) << 2;


                this.data[idx] = 255;
                this.data[idx+1] = 218;
                this.data[idx+2] = 185;


                this.data[idx+3] = 0.5;
            }
        }

        this.pack().pipe(fs.createWriteStream('C:\\Users\\yako\\desktop\\newOut.png'));
    });
});
writeStream.on('error', function (err) {
    console.error(err);
});
var pic=new PNG({
宽度:cols,
高度:行
});
控制台日志(图宽、图高);
var writeStream=fs.createWriteStream('C:\\Users\\yako\\desktop\\out.png');
pic.pack().管道(writeStream);
writeStream.on('parsed',function()){
log('parsed');
});
writeStream.on('finish',function(){
fs.createReadStream('C:\\Users\\yako\\desktop\\out.png')
.管道(新巴布亚新几内亚)({
过滤器类型:-1
}))
.on('parsed',function()){
对于(变量y=0;y
var fs = require('fs'),
    PNG = require('pngjs').PNG;

var png = new PNG({
    width: 100,
    height: 100,
    filterType: -1
});

for (var y = 0; y < png.height; y++) {
    for (var x = 0; x < png.width; x++) {
        var idx = (png.width * y + x) << 2;
        png.data[idx  ] = 255; // red
        png.data[idx+1] = 218; // green
        png.data[idx+2] = 185; // blue
        png.data[idx+3] = 128; // alpha (0 is transparent)
    }
}

png.pack().pipe(fs.createWriteStream('newOut.png'));
var fs=require('fs'),
PNG=需要('pngjs')。PNG;
var png=新png({
宽度:100,
身高:100,
过滤器类型:-1
});
对于(变量y=0;yvar idx=(png.width*y+x)哇,谢谢,我没有意识到不透明度超过255,如果我想使用灰度图像,我必须将灰度矩阵转换为RGB吗?我应该只设置r=g=b吗?