【问题标题】:Batch resizing with ImageMagick's mpr and spawn in Node.js使用 ImageMagick 的 mpr 批量调整大小并在 Node.js 中生成
【发布时间】: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


    【解决方案1】:

    convert 的每个单独参数都应该是它自己的数组元素。如果你用空格将它与其他参数隔开,那么它应该是它自己的列表元素。例如:

    [sourceFilePathTemp, "-write", "mpr:file", "-resize", "x128", ...]
    

    等等,对于每个参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 2019-12-20
      • 1970-01-01
      • 2021-09-21
      相关资源
      最近更新 更多