【问题标题】:Convert Images to webp with Node使用 Node 将图像转换为 webp
【发布时间】:2021-09-18 23:09:06
【问题描述】:

我有一个将图像转换为节点的脚本,但遇到了一个问题,我收到了成功的消息,但没有任何输出。

import imagemin from "imagemin";
import webp from "imagemin-webp";

var outputFolder = "./FSS-assets/webp";            // Output folder
var PNGImages = "./FSS-assets/*.png";         // PNG images
var JPEGImages = "./FSS-assets/*.jpg";        // JPEG images

imagemin([PNGImages], outputFolder, {
  plugins: [webp({
      lossless: true // Losslessly encode images
  })]
}).then(function() {
  console.log("Images converted!");
});

imagemin([JPEGImages], outputFolder, {
  plugins: [webp({
    quality: 65 // Quality setting from 0 to 100
  })]
}).then(function() {
  console.log("Images converted!");
});

我在跑步

  • 节点 v14.16.0
  • imagemin v8
  • imagemin-webp v6

我也尝试过使用相对文件夹路径,但无济于事。这是在 Windows 10 上。

【问题讨论】:

    标签: node.js webp imagemin imagemin-webp


    【解决方案1】:

    那是因为 imagemin 有 2 个参数 input 和 options 你给了 3 个参数。

    来自Doc:

    imagemin(input, options?)
    
    Returns Promise<object[]> in the format {data: Buffer, sourcePath: string, destinationPath: string}.
    

    所以对于您的代码,它将是:

    imagemin([PNGImages], {
      destination: outputFolder,
      plugins: [webp({
          lossless: true // Losslessly encode images
      })]
    }).then(function() {
      console.log("Images converted!");
    });
    
    

    【讨论】:

    • 绝对是这样!这是正确的答案。
    【解决方案2】:

    看起来您只需要稍微调整一下参数结构。 To be ([images], { destination: ‘/output directory’, plugins: {});

    const files = await imagemin(['images/*.{jpg,png}'], {
    destination: 'build/images',
    plugins: [
        imageminJpegtran(),
        imageminPngquant({
            quality: [0.6, 0.8]
        })
    ]
    });
    

    希望这会有所帮助并有效。

    【讨论】:

      猜你喜欢
      • 2019-11-18
      • 1970-01-01
      • 2013-11-20
      • 2018-05-10
      • 2022-07-07
      • 2012-10-24
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      相关资源
      最近更新 更多