我尝试使用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
]);
带有dim
和dim2
的是我的特定尺寸。但是,当我使用该功能时,会出现错误,并且我不知道如何操作。您可以查看下面的图像。
`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
答案 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->”