由pngjs为nodejs生成的PNG中的噪声

时间:2017-09-12 23:48:45

标签: javascript node.js png

我想使用pngjs v3.3.0为Nodejs将PNG spritesheet切片为sprite。对于一些产生的精灵,这给了我不可思议的嘈杂背景。然后我尝试了简单的脚本,只创建空的透明PNG,然后将其写入文件:

var fs          = require('fs');
var PNG         = require('pngjs').PNG;
var dstBuffer   = new PNG({ width:50, height:50 });

dstBuffer.pack().pipe(fs.createWriteStream("empty.png"));

并且还创建了具有嘈杂背景的空PNG。我也试图不使用透明度(colorType:2),然后我得到了带有噪音的白色PNG。每次我使用脚本时,噪音都会有所不同。 This is how it looks like。尝试同步和异步方法。

我只是在cmd中运行sccript,如下所示:node pngjs。和pngjs一起安装npm:npm install pngjs。所以我需要在背景上避免这种噪音。

1 个答案:

答案 0 :(得分:0)

需要初始化数据。这可以像这样实现(另见https://github.com/lukeapage/pngjs/blob/master/examples/newfile.js):

var fs          = require('fs');
var PNG         = require('pngjs').PNG;
var dstBuffer   = new PNG({ width:50, height:50 });

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

        dstBuffer.data[idx] = 255;
        dstBuffer.data[idx + 1] = 255;
        dstBuffer.data[idx + 2] = 255;

        dstBuffer.data[idx + 3] = 255;
    }
}

dstBuffer.pack().pipe(fs.createWriteStream("empty.png"));