我在 Ubuntu 12 服务器上使用 ImageMagick 6.6.9。我遇到的问题是我的 ImageMagick 转换命令,我使用 shell_exec
函数在 PHP 中运行(但也尝试过exec
),其中包含 PHP escapeshellcmd
函数转义的字符
'
这是我的PHP代码:
$result = exec(escapeshellcmd($convertString));
这是我的示例转换命令:
/usr/bin/convert "/Users/rich/Sites/example/1234.JPG" -quality 85 -auto-orient -thumbnail "640x88>" "/Users/rich/Sites/example/1234-thumb.jpg"
最后,这是通过escapeshellcmd
运行后的转换命令:
/usr/bin/convert "/Users/rich/Sites/example/1234.JPG" -quality 85 -auto-orient -thumbnail "640x88'>" "/Users/rich/Sites/example/1234-thumb.jpg"
问题是转义的'>
字符会导致 ImageMagick 错误:
转换:选项 -thumbnail' 的参数无效:640x88>@ error/convert.c/ConvertImageCommand/2770。
有谁知道我可以解决这个问题的方法?我已经浏览了 ImageMagick 文档,虽然他们承认存在问题,但他们似乎没有提供任何其他方法来调整图像大小而不使用特殊的 unix 字符:
唯一的收缩标志('>'标志)是 UNIX Shell 和 Window 批处理脚本中的特殊字符,您需要转义该字符(在 shell 中使用反斜杠">",在 Windows 批处理中使用反斜杠"^>")。它在HTML网页中也很特殊,因此PHP脚本也可能需要一些特殊的处理。
提前非常感谢。
事实证明,我在-thumbnail "640x88'>"
大小选项周围有额外的"
(引号)。作为参考,正确的转义转换命令应该是:
/usr/bin/convert "/Users/rich/Sites/example/1234.JPG" -quality 85 -auto-orient -thumbnail 640x88'> "/Users/rich/Sites/example/1234-thumb.jpg"