【问题标题】:How to use PNGJS library to create png from rgb matrix?如何使用 PNGJS 库从 rgb 矩阵创建 png?
【发布时间】:2015-11-22 09:53:52
【问题描述】:

我无法从https://github.com/niegowski/node-pngjs 此处的文档中创建一个 PNG 文件(编码)。该文档提供了一个关于操作现有 PNG 的示例。
为了进行完整性检查,我一直在尝试为每个像素提供相同的 RGB 值。我认为这个问题帖子也很相关https://github.com/niegowski/node-pngjs/issues/20。这是我试过的代码

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);
});

【问题讨论】:

    标签: javascript node.js image-processing png


    【解决方案1】:

    简单:

    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'));
    

    【讨论】:

    • 哇,谢谢,我没有意识到不透明度超过 255,如果我想使用灰度图像,是否必须将灰度矩阵转换为 RGB?
    • 我应该设置 r = g = b 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多