【发布时间】:2021-03-23 08:30:20
【问题描述】:
我正在尝试使用 nodejs sharp 调整分辨率为 16384x16384 或更高的图像大小。虽然该函数在本地机器上运行良好,但问题出现在 aws lambda 上。
我收到此错误“Runtime.UnhandledPromiseRejection: Error: wbuffer_write: write failed”,
“unix 错误:设备上没有剩余空间”
这台机器有 2024mb 内存,可以在较低分辨率的图像上正常工作,但使用较大的分辨率会引发错误。 输出分辨率应该是8192和4096
我尝试更改 sharp.cache 内存,重写函数,使其在 .toBuffer 之后立即发送文件,但它没有帮助,因为它在 .toBuffer 函数期间抛出错误。
我有点没有想法,非常感谢帮助。
有问题的代码:
async function changeResolution(){
try {
var key = './image.jpg';
var image = sharp(key, { limitInputPixels: false });
return await image
.resize(8192,8192)
.toBuffer()
.then(console.log("I do not get here"))
} catch (error) {
console.log(error);
return;
}
}
【问题讨论】:
-
源文件和目标文件有多大?这听起来像您在 Lambda 上的磁盘空间不足。完全未压缩的 16384x16384 JPG 将超过 1GB,而您在 Lambda 上被限制为 512MB。
标签: node.js aws-lambda sharp