如何在Node.js中将JPG图像转换为WEBP格式? [英] How to convert JPG image to WEBP format in Node.js?

查看:139
本文介绍了如何在Node.js中将JPG图像转换为WEBP格式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用react.Js上传图像,然后使用multer中间件将该图像保存在node.Js中.效果很好,但是现在我想使用webp-converter将该图像转换为WEBP格式,反之亦然.

I m trying to upload an image using react.Js and save that image in node.Js using multer middleware. This is working perfectly but now I want to convert that image to WEBP format using webp-converter which is a small vice- versa.

但是我遇到了这个错误:

But I m getting this error :

 Error: Command failed: E:\Zegal\node_modules\webp-converte
 ib/libwebp_win64/bin/cwebp.exe -q 80 2a3279b820cc23939eea0295228423ee-- 
 inspironal-quote-about-life-inspiring-words.jpg -o output.webp
 SHCreateStreamOnFileA(filename, STGM_READ, stream) failed 80070002
 Error opening input file 2a3279b820cc23939eea0295228423ee--inspirational-quo
 about-life-inspiring-words.jpg (80070002)
 OpenInputStream(filename, &stream) failed 80070002
 cannot open input file '2a3279b820cc23939eea0295228423ee--inspirational-quot
 bout-life-inspiring-words.jpg'
 Error! Could not process file 2a3279b820cc23939eea0295228423ee--inspirationa
 uote-about-life-inspiring-words.jpg
 Error! Cannot read input picture file '2a3279b820cc23939eea0295228423ee--ins
 ational-quote-about-life-inspiring-words.jpg'

如何在使用multer和WEBP的节点中解决此问题?有没有其他转换解决方案?

How can I solve this problem in node using multer and WEBP ? Is there any other solution for conversion ?

const multer = require('multer');
const webp = require('webp-converter');
const path = require('path');
const storage = multer.diskStorage({
    destination: './public/images',
    filename(req, file, cb) {
        cb(null, `${file.fieldname}-${Date.now()}${path.extname(file.originalname)}`)
    }
});

const upload = multer({
    storage,
    fileFilter: function (req, file, cb) {
        checkFileType(file, cb)
    }
}).single("image");

checkFileType = (file, cb) => {
    console.log("check file", file);
    const requireMimetype = "image/jpeg";
    const checkMimeType = file.mimetype == requireMimetype ? true : false;
    console.log("checkMimeType", checkMimeType);
    if (checkMimeType) {
        webp.cwebp(file.originalname, "output.webp", "-q 80", function (status) {
            console.log(status);
        });
        return cb(null, true)
    } else {
        cb("Error:Only jpg images are allowed.")
    }
}

module.exports = upload;

推荐答案

我使用了一个非常出色的图像处理库,名为 sharp ,该库提供的功能之一是转换图像.到webp图片

I had used a really awesome image processing library named sharp, and one of the features that that library offer is to convert an image into a webp image

import sharp from 'sharp';

const imageProcessing = sharp();

imageProcessing
.webp()
.pipe(someWritableStream);

这篇关于如何在Node.js中将JPG图像转换为WEBP格式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆