Firebase生成圆形缩略图失败,代码为1

时间:2019-04-26 11:21:49

标签: node.js firebase imagemagick google-cloud-functions

我尝试使用ImageMagick通过Cloud Functions将图像上传从“我的应用”上传到Firebase。

return spawn("convert", [
    tempFilePath,
    "(",
    "-size", 
    dim + "x" + dim, 
    "xc:black",
    "-fill",
    "white",
    "-draw",
    "\"circle",
    dim2 + "," + dim2,
    dim2 + "," + dim1+"\"",
    ")",
    "-alpha",
    "off",
    "-gravity",
    "center",
    "-compose",
    "copy_opacity",
    "-composite",
    "-crop",
    dim+"x"+dim+"+0+0",
    "-thumbnail",
    "300x300>",
    tempFilePathPNG
  ]); 

带有dimdim2的是我的特定尺寸。但是,当我使用该功能时,会出现错误,并且我不知道如何操作。您可以查看下面的图像。

`convert /tmp/7eee6327-8b7a-41f8-a1a2-19bbc3f297c2.jpg ( -size 2592x2592 xc:black -fill white -draw "circle 1296,1296 1296,2591" ) -alpha off -gravity center -compose copy_opacity -composite -crop 2592x2592+0+0 -thumbnail 300x300> /tmp/7eee6327-8b7a-41f8-a1a2-19bbc3f297c2.png` failed with code 1

我也尝试其他人仅生成resizedraw image并成功。但是上面的这段代码总是失败的。请帮我。 enter image description here

2 个答案:

答案 0 :(得分:3)

我找到了解决方案!!! 我将子代中的spawn转换为exec,如下所示,并且可以正常工作。我也将双逃逸放在括号附近以使其正常工作。但是我仍然想使用spawn。

return new Promise((resolve,reject)=>{
        exec("convert "+tempFilePath+" \\( -size "+dim+"x"+dim+" xc:black -fill white -draw \"circle "+dim2+","+dim2+" "+dim2+","+dim1+"\" \\) -alpha off -gravity center -compose copy_opacity -composite -crop "+dim+"x"+dim+"+0+0 -thumbnail 300x300 "+tempFilePathPNG,(error,stdout,stderr)=>{
          if(error){
            console.log(error);
            reject(error);
            return;
          }
          resolve();
        })
      })

答案 1 :(得分:0)

由于缺乏足够的热情而发布答案:

convert期望将文件名作为最后一个参数,或者使用标准输出作为“-”。 在您的情况下,最后一个参数是300x300,因此转换将失败,并显示以下内容: 转换:缺少图像文件名“ 300x300”

尝试将“ 300x300>”替换为“ 300x300->”