Javascript / NodeJS - 无法推送到阵列

时间:2017-09-27 17:08:39

标签: javascript arrays node.js scope global-variables

我正在尝试使用Node.JS进行一些图像处理。我能够提取我需要的信息,但是我很难聚合多个图像的结果并将它们写入文件。

你会在底部附近看到2行:

console.log(palette);
output.push(palette);

我可以将palette对象打印到控制台,但我无法将其推送到output数组。我怀疑存在一些范围问题,但我似乎无法弄明白。

任何和所有的想法都非常感激。

    fs = require('fs'),
    getPixels = require("get-pixels");

    var startTime = Date.now();
    var imageDirectory = 'input';
    var images = fs.readdirSync(imageDirectory);

    console.log('Found ' + images.length + ' images.');

    var output = [];

    for (var image = 0; image < images.length; image++) {

        getPixels(imageDirectory + '/' + images[image], function(err, pixels) {
            if(err) {
                console.log('Bad image path');
                return
            }

            var palette = {
                coloredPixels: 0,
                hues: [],
                image: images[image],
                classification: false,
                pixelCount: null
            };

            palette.pixelCount = pixels.shape[0] * pixels.shape[1] * pixels.shape[2];

            for(var i=0; i < 256; i++) {
                palette.hues[i] = 0;
            }

            for (var i=0; i < palette.pixelCount; i+=4) {
                var rgb = [pixels.data[i], pixels.data[i+1], pixels.data[i+2]],
                    hsl = convert.rgb.hsl(rgb),
                    hue = hsl[0],
                    saturation = hsl[1];

                if (saturation) {
                    palette.hues[hue]++;
                    palette.coloredPixels++;
                }
            }

            console.log(palette);
            output.push(palette);
        })
    }

    var json = JSON.stringify(output, null, 2); 
    fs.writeFileSync('data.json', json);

    // Calculate time spent
    var endTime = Date.now();
    console.log('Finished in ' + (endTime - startTime) / 1000 + ' seconds.');

0 个答案:

没有答案