【问题标题】:How to confirm the img file copy, conversion is completed, using node.js如何确认img文件复制,转换完成,使用node.js
【发布时间】:2015-12-29 10:10:48
【问题描述】:

在我的节点应用fsgm复制和转换img文件, 如何检查复制和转换特定流是否完整?

ex: img 是图片 url 数组。

for (var i = 0; i < Img.length; i++) {
    // copy img file , how to check this [i] img is copy complete
    fs.createReadStream('/' + Img[i]).pipe(fs.createWriteStream('/' + pngImg[i] + '_copy.png');

    gm('/' + Img[i].'_copy.png')
        .stream('jpg', function (err, stdout, stderr) {
            fs.createWriteStream('/' + Img[i].jpg);
            stdout.pipe(writeStream);
        });  // conversion img png to jpg , how to check this [i] img is conversion complete


    fs.unlink('/' + Img[i] + '_copy.png'), function (err) {
        console.log('successfully deleted');
    });
}

或者是否有更好的方法?完成复制、转换和删除。

【问题讨论】:

标签: javascript node.js fs


【解决方案1】:

如果您仅为转换制作原始文件的副本,则无需这样做。您的转换可以很简单:

var images = [
    'image1.png',
    'image2.png',
    'image3.png'
];

for (var i = 0; i < images.length; i++) {
    var file = images[i];
    var writeStream = fs.createWriteStream(__dirname + '/' + file + '.jpg');

    gm(__dirname + '/' + file)
        .stream('jpg')
        .pipe(writeStream)
        .on('finish', (function done(file) {
            console.log('done: ' + file);
        }).bind(null, file));
}

【讨论】:

  • 我需要原始文件。转换原文件会消失。
  • 谢谢!我试了一下,但我仍然想知道如何确认操作已完成。
  • 这个bind(null, file)的作用是什么?
  • .on('finish') 会告诉您转换何时完成。我正在使用.bind(null, file) 来捕获文件变量,如果我不这样做,它将记录done: image3.png 3 次(question hereanswer with bind)。
  • 谢谢。在 bind(null, file) 函数中,什么是“null”参数?如何使用参数。
猜你喜欢
  • 1970-01-01
  • 2015-03-01
  • 2020-09-09
  • 1970-01-01
  • 2021-06-13
  • 1970-01-01
  • 2018-03-30
  • 2010-10-08
  • 1970-01-01
相关资源
最近更新 更多