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

Firebase generate circle thumbnail fail with code 1

我尝试使用 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 并且它成功了。但是上面的这段代码总是失败。请帮我。

由于 carma 不足,作为答案发布:

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

尝试用“300x300 - >”替换“300x300>”

我找到了解决办法!!! 我将 spawn 转换为 exec in child promise 如下所示并且它有效。我还将双重逃生装置放在支架附近以使其工作。但是我还是想用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();
        })
      })