【发布时间】:2019-05-15 22:36:29
【问题描述】:
我的网站尝试转换的其中一张图片出现此 ImageMagick 错误:
{ Error: Command failed: convert: no decode delegate for this image format `/tmp/925bf249f8297827f51f0370642eb560.jpg' @ error/constitute.c/ReadImage/544.
convert: no images defined `/tmp/abdf362d-f7eb-435f-bafe-5a134be0235f.png' @ error/convert.c/ConvertImageCommand/3046.
at ChildProcess.<anonymous> (/var/task/node_modules/imagemagick/imagemagick.js:88:15)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:886:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5) timedOut: false, killed: false, code: 1, signal: null }
奇怪的是它只发生在我的 AWS Lambda 函数中,而不是在我的机器 (Mac) 上。我正在阅读有关版本控制、重新安装 ImageMagick 之类的内容,但我无法在 Lambda 运行时环境中执行此操作。有没有办法解决这个问题?
【问题讨论】:
-
您是否已将 Image Magik 安装到您部署的 Lambda 包中?有关详细信息,请参阅this post。
-
您可能必须在 AWS 中提供 ImageMagick convert 的完整路径,因为它可能不会使用与基本操作系统(例如 MAC)相同的 ENVIRONMENT 变量。
-
失败图像的真实格式是什么?实际上有两种 JPEG 格式:JFIF(“传统”,由图像编辑器制作)和 Exif(最近,由相机制作)。
file命令将区分它们(JPEG image data, Exif standard与JPEG image data, JFIF standard 1.01)。或者文件是 Jpeg2000,甚至是不相关的文件(PNG、GIF、TIFF...)。 -
@stdunbar 我不明白你的意思。 ImageMagick 安装在本地,它在我的 package.json 中。我觉得 Lambda 安装使用就够了。
-
@fmw42 我的问题中显示的错误意味着 ImageMagick 正在工作,但它缺少某个图像的解码委托。但我不太清楚如何将这样的委托添加到 Lambda。我只相信 ImageMagick 自带的,对吧?
标签: node.js amazon-web-services aws-lambda imagemagick