Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用云功能在云存储上转换图像格式,Sharp不起作用_Javascript_Node.js_Firebase_Google Cloud Functions_Sharp - Fatal编程技术网

Javascript 使用云功能在云存储上转换图像格式,Sharp不起作用

Javascript 使用云功能在云存储上转换图像格式,Sharp不起作用,javascript,node.js,firebase,google-cloud-functions,sharp,Javascript,Node.js,Firebase,Google Cloud Functions,Sharp,将图像上载到Firebase云存储时,我希望调整图像大小并将图像格式转换为webp。所以我用云函数创建了一个触发器。为此,我使用Node.js Sharp库 云函数可以正确调整图像大小,但它始终保持原始格式。 这是转换和调整大小的代码: 函数调整大小(原始文件、调整大小文件、大小){ 让高度、宽度; if(size.indexOf(“,”)!=-1){ [宽度,高度]=大小。拆分(“,”); }else if(size.indexOf(“x”)!=-1){ [宽度、高度]=尺寸。分割(“x”)

将图像上载到Firebase云存储时,我希望调整图像大小并将图像格式转换为webp。所以我用云函数创建了一个触发器。为此,我使用Node.js Sharp库

云函数可以正确调整图像大小,但它始终保持原始格式。

这是转换和调整大小的代码:

函数调整大小(原始文件、调整大小文件、大小){
让高度、宽度;
if(size.indexOf(“,”)!=-1){
[宽度,高度]=大小。拆分(“,”);
}else if(size.indexOf(“x”)!=-1){
[宽度、高度]=尺寸。分割(“x”);
}否则{
抛出新错误(“高度和宽度不由“,”或“x”分隔);
}
返回夏普(原始文件)
.轮换
.toFormat(“webp”{
质量:80,
原力:对
})
.调整大小(parseInt(宽度,10),parseInt(高度,10){
适合:“内部”,
不扩大:是的,
}).toFile(resizedFile);

}
不要只使用
toFormat()
尝试使用它,然后是
webp()
调用,如下所示:

return sharp(originalFile)
    .rotate()
    .resize(parseInt(width, 10), parseInt(height, 10), {
        fit: "inside",
        withoutEnlargement: true,
    })
    .toFormat("webp")
    .webp({
        quality: 80,
        force: true
    });
    .toFile(resizedFile);

这应该可以让它工作。

不要只使用
toFormat()
尝试使用它,然后调用
webp()
,如下所示:

return sharp(originalFile)
    .rotate()
    .resize(parseInt(width, 10), parseInt(height, 10), {
        fit: "inside",
        withoutEnlargement: true,
    })
    .toFormat("webp")
    .webp({
        quality: 80,
        force: true
    });
    .toFile(resizedFile);

这应该能让它起作用。

我已经为此奋斗了几个小时,这就是最终对我起作用的原因。确保使用上载头设置的用于上载到AWS/Azure/Digital Ocean的mimetype为“image/webp”

我已经为此奋斗了数小时,这是我最终成功的方法。确保使用上载头设置的用于上载到AWS/Azure/Digital Ocean的mimetype为“image/webp”

我已经尝试过,我再次尝试过,但它不起作用。我认为问题可能是“webp”,但对于其他格式它也不起作用。你如何调用该函数
.toFile(resizedFile)
返回一个承诺,因此这可能是一个同步性问题。同步调用该函数(使用表达式“await”)。事实上,调整大小功能工作正常。这可能是与导入sharp library有关的问题吗?或者是操作系统问题?我想说,你在代码中做的每件事都是正确的,问题很可能出在sharp库本身,尝试使用它的不同版本作为测试。我尝试过更新和旧版本,但不幸的是,它不起作用。我已经尝试过,我再次尝试过,但它不起作用。我认为问题可能是“webp”,但对于其他格式它也不起作用。你如何调用该函数
.toFile(resizedFile)
返回一个承诺,因此这可能是一个同步性问题。同步调用该函数(使用表达式“await”)。事实上,调整大小功能工作正常。这可能是与导入sharp library有关的问题吗?或者是操作系统问题?我想说你在代码中做的每件事都是正确的,问题很可能出在sharp库本身,试着使用它的不同版本作为测试。我试过更新和旧版本,但不幸的是,它不起作用。这看起来更像是一个评论而不是答案。这看起来更像是一个评论而不是答案。