很奇怪的是,当将字符串变量作为文件路径输入传递给 Sharp() 时,总是给我这个错误 -
[错误:输入文件丢失或图像格式不受支持]
我什至将 toString() 添加到我的变量中,因此我的返回肯定是一个字符串。
var tmp = 'image/'+ id + '.jpg';
var path = tmp.toString();
console.log("What's in tmp: " + tmp);
console.log("What's in path: " + path);
sharp(path)
.resize(300, 300)
.toFile('image/'+ id + 'L.jpg', function(err, info) {
if (err) {
console.log('Error Type: ', err);
}
});
Run Code Online (Sandbox Code Playgroud)
我验证我的代码的方式如下:
它以另一种方式工作,所以我的图像格式是正确的。我什至做了一个“sharp.format”来确认它的支持,所以这不是这里的问题。接下来,我从控制台日志输出中复制“路径”变量字符串,并将其直接粘贴到 Sharp 构造函数调用 = Sharp() 中。
控制台输出:
tmp 中有什么:image/1.jpg
路径中有什么:image/1.jpg
sharp('image/1.jpg')
.resize(300, 300)
.toFile('image/'+ id + 'L.jpg', function(err, info) {
if (err) {
console.log('Error Type: ', err);
}
});
Run Code Online (Sandbox Code Playgroud)
现在一切再次开始工作 - 文件大小已调整并在图像中生成。使用“路径”变量继续切换回来没有给我带来运气。这种问题让我感到惊讶,因为他们的文档中明确指出它支持 String 类型输入。现在我也对路径和“image/1.jpg”之间的区别感到困惑。也许我的下一步是使用 (path === 'image/1.jpg' ) 来比较它们。
来自 Sharp doc 的声明供您参考 --> 'input (Buffer | String)? 或包含 JPEG、PNG、WebP、GIF、SVG 或 TIFF 图像文件路径的字符串。
这一定是我错过的明显事情。我确信,当他们设计该工具时,他们会为用户提供灵活性,将其输入路径定义为代码重用的变量。那么有什么建议吗?提前致谢。