【发布时间】:2020-09-03 13:29:19
【问题描述】:
我目前正在使用 Node.js 安装在 Google Cloud Functions 中的 ImageMagick 将 PDF 转换为不同尺寸的多个 JPG。
我在Promise.all() 调用中这样做:
return Promise.all([
spawn("convert", [
sourceFilePathTemp,
"-resize",
`1600x`,
`${imageDirTemp}/image-large-%03d.jpg`,
]),
spawn("convert", [
sourceFilePathTemp,
"-resize",
`800x`,
`${imageDirTemp}/image-medium-%03d.jpg`,
]),
spawn("convert", [
sourceFilePathTemp,
"-thumbnail",
`200x200>`,
`${imageDirTemp}/image-thumbnail-%03d.jpg`,
]),
]);
我已经意识到我可以根据 ImageMagick 使用 mpr(=内存程序寄存器)(https://www.imagemagick.org/Usage/files/#mpr)在一次调用中完成这 3 个调用。
该文档包含一个将图像调整为多个维度的示例:
convert scroll.gif -background lightsteelblue -flatten -alpha off \
-write mpr:scroll -resize x128 -write scroll_lrg.jpg +delete \
mpr:scroll -resize x96 -write scroll_big.jpg +delete \
mpr:scroll -resize x64 -write scroll_med.jpg +delete \
mpr:scroll -resize x32 scroll_sml.jpg
但是,我不知道如何使用spawn 编写此命令。
我猜它会像下面这样,但我不知道如何对选项数组中的元素进行分组以及命令变得复杂时的顺序
spawn("convert", [
sourceFilePathTemp,
"-write",
`mpr:file -resize x128 -write ${imageDirTemp}/image-large-%03d.jpg +delete`,
`mpr:file -resize x96 -write ${imageDirTemp}/image-medium-%03d.jpg +delete`,
`mpr:file -resize x64 -write ${imageDirTemp}/image-small-%03d.jpg +delete`,
]),
【问题讨论】:
标签: node.js google-cloud-functions imagemagick imagemagick-convert spawn