循环遍历图像文件夹并使用节点gm调整大小

时间:2017-09-01 11:50:23

标签: javascript loops gm

此代码仅导致将单个图像写入输出(6175710.jpg)。相反,我想要三个。我的代码中有什么不对。我正在使用node gm模块。看我的实施:

  fs.readdir(__dirname + '/../images/master/', function(err,contents) {
    if (err) throw err;

    for (var i = 0; i < contents.length; i++) {
        var source = contents[i];
        console.warn('Source: ', source)
        gm(__dirname + '/../images/master/' + source)
          .resize(1280)
          .crop(1280,720,0,0)
          .toBuffer('jpg',function (err, buffer) {
          if (err) console.warn(err);
            console.warn('Source2: ', source)
            gm(buffer)
            .geometry('+0+0')
            .composite(__dirname + '/../public/images/Header.jpg')
            .write(__dirname + '/../images/ready/' + source, function (err) {
            if (err) {console.warn(err)}
              console.warn('done saving')
              console.warn('Source3: ', source)
          })
            })
    }
});

然而,我的控制台显示了这一点:

Source:  2620590.jpg
Source:  4720702.jpg
Source:  6175710.jpg
Source2:  6175710.jpg
Source2:  6175710.jpg
Source2:  6175710.jpg
done saving
Source3:  6175710.jpg
done saving
Source3:  6175710.jpg
done saving
Source3:  6175710.jpg

更新:我使用Filehound lib解决了它。

0 个答案:

没有答案