【问题标题】:Output Media is outputted to 2 Directories instead of 1输出媒体输出到 2 个目录而不是 1 个
【发布时间】:2021-07-19 13:12:48
【问题描述】:

问题

我一直在尝试将一系列图片,PNG转JPG,我似乎遇到了输出媒体输出到预期路径和代码主脚本路径的问题:

使用的模块:npm media-converter

代码:

/**
 * Reads PNG File(s) then converts to JPG
 */
function ArrayConvertPNGtoJPG() {

    // PNG to JPG Spinner
    const pngTOjpgSpinner = ora("WARNING: Attempting Conversion of PNG to JPG").start();

    const directoryPath = path.join(__dirname, './Input');
    setTimeout(() => {
        fs.readdir(directoryPath, function (err, files) {
            //handling error
            if (err) {
                return console.log('Unable to scan directory: ' + err);
            } 
    
            for (let i = 0; i < files.length; i++) {
                const input = "./Input/" + files[i];
                const output = `./Converted/${files[i].slice(0, -4)}.jpg`
                convert(input, output, (err) => {
                    if (!err){
                      pngTOjpgSpinner.succeed("SUCCESS: ".green + input.green + " Converted to ".green + output.green);
                    } else {
                        pngTOjpgSpinner.fail("ERROR: Unable to convert file: " + input + " to a JPG");
                    }
                });
            }
        });
    }, 2000);
}

结果:

如果您能帮我找到解决方案,那将很有帮助。

【问题讨论】:

    标签: javascript npm-scripts


    【解决方案1】:

    这可能是媒体转换器的一个(可能是有意的?)功能。

    首先,将尝试将 .png 转换为 .jpg 并将其输出到 /Converted 文件夹中。

    其次,它会尝试使用imagemin 包压缩生成的.jpg。

    node_modules/media-converter/converter.js中的代码中,你会发现这一行:

    destination: './'
    

    意思是,/Converted/my-image.jpg 文件的目的地,一旦被压缩,将是安装的根文件夹。这就是为什么您会在 /Converted/my-image.jpg 中看到转换但未压缩的文件,而在安装的根目录中看到转换后的 AND 压缩文件。

    对此您无能为力,除非您等待插件更新(我看到您已经提交了一个问题,因此它可能会在未来的某个时间得到解决)。

    或者您可以修改插件代码并更改压缩版本的目标。 (注意,不能是同一个文件夹./Converted/,一定是别的东西或者插件错误。)

    destination: './Converted/Compressed/',
    

    (不过,您仍然有两个文件。您可以编写一些代码来删除/Converted/ 中的文件并将./Converted/Compressed/ 中的文件复制到./Converted。任何适合您的需求。)

    【讨论】:

    • 我看到你花时间帮助我。我尝试将它放在不同的目录中,它仍然输出到根文件夹。我已经设置了函数来估计完成过程的等待时间,它在 80% 的时间里都有效。由于我对此问题无能为力,我将全面学习 Js 并复制我自己的模块
    • 你值得拥有 50
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    相关资源
    最近更新 更多