我正在创建Firebase功能,以便在存储中上传图片并从中创建圆形缩略图。一切都有效,但实际的ImageMagick命令。
代码:
return new Promise((resolve, reject) => {
exec(`convert ${tempLocalFile} -resize x300 -resize 300x< -gravity center -crop ${THUMB_MAX_HEIGHT}x${THUMB_MAX_WIDTH}+0+0 +repage \( +clone -threshold -1 -negate -fill white -draw "circle 150,150 150,0" \) -alpha off -compose copy_opacity -composite -auto-orient ${tempLocalThumbFile}`, { stdio: 'ignore' }, (err, stdout) => {
if (err) {
console.error('Error conveting image to thumbnail.', err);
reject(err);
} else {
resolve(stdout);
}
});
});
我假设这是由括号是一个需要转义的特殊字符引起的。如何在命令中转义括号?我第一次尝试没有括号前面的\
,但是它导致了同样的错误。
答案 0 :(得分:0)
这并不是Firebase真正具体的,但是因为你的命令会生成一个单括号,而不是\(
,这是what's required by ImageMagick。
要解决此问题,请更改
... +repage \( +clone -threshold -1 -negate -fill white -draw "circle 150,150 150,0" \) ...
到
... +repage \\( +clone -threshold -1 -negate -fill white -draw "circle 150,150 150,0" \\) ...
应生成正确的字符串。基本上需要做的是你需要打印出反斜杠\
,但由于那是转义字符,那就是需要转义的字符,所以命令应该使用{ {1}}而不是。