GraphicsMagick 的 Convert 命令选项的正确索引位置是啥
Posted
技术标签:
【中文标题】GraphicsMagick 的 Convert 命令选项的正确索引位置是啥【英文标题】:What is the correct index position of the Convert command's options of GraphicsMagickGraphicsMagick 的 Convert 命令选项的正确索引位置是什么 【发布时间】:2015-09-29 04:42:44 【问题描述】:我对 GraphicsMagick 的隐蔽命令感到困惑。
根据文档(http://www.graphicsmagick.org/convert.html),convert 命令的概要是:
convert [ options ... ] input_file output_file
根据上面的概要,我可以通过以下方式执行转换命令:
示例 1:
gm convert -strip -scale x400 inputFile.jpg outputFile.jpg
以上命令执行成功。现在,我使用不同的选项索引位置运行相同的命令。
示例 2:
gm convert inputFile.jpg -strip -scale x400 outputFile.jpg
上面的例子执行成功。上例中options的index位置不同,与synopsis不符。
我的问题是,哪个例子是正确的?
【问题讨论】:
概要不正确。应该是“gm convert [options...] input_file [options...] output_file”。我们会解决这个问题。 【参考方案1】:我担心答案部分是哲学的,部分是民间传说的,部分是观点的,部分是 GraphicsMagick 的灵活性的,部分是联机手册的死板的。让我解释一下……
要理解答案,您需要区分settings
和operators
。 @KurtPfeifle here 做得很好,为了完整起见,我将总结如下:
一些参数是settings
- 它们设置并在命令结束或更改之前保持其值。例如,-size
设置在命令行上设置后创建的所有画布的大小。在第一次设置之前,默认画布大小为 1x1,设置后一直保持到命令结束。
一些参数是operators
- 它们通常执行一些图像处理,例如阈值处理或转换为灰度。这些对当前在图像列表中的所有图像进行操作。
也许举个例子会有所帮助。首先,我们使用-size
设置:
gm convert -background none xc:red -size 5x5 xc:lime xc:blue -size 10x10 xc:magenta +append setting.png
最初,默认大小为 1x1,因此红色画布的大小为 1x1。然后我更改了设置,对于石灰和蓝色画布,它保持在5x5
,直到我将洋红色画布更改为 10x10。这些是设置,它们为即将出现的图像设置了一些东西。
现在,我对-colorspace
运算符做了类似的事情:
gm convert xc:red xc:lime xc:blue -colorspace gray +append operator.png
您会看到-colorspace
运算符已更改图像列表中已经存在的所有图像,即它们处理先前已添加到列表中的图像。
如果您愿意,您可以将事情简化并说“设置适用于所有即将到来的事物,操作符适用于所有已逝去的事物”。虽然我确信有反例。
几年前命令行选项的顺序已经合理化,GraphicsMagick 允许一些灵活性以保留一些向后兼容性。这可能是对您的实际问题的最佳解释。
因此,一般情况下,您应该尽快在命令行中声明 settings
,并根据列表中当前的图像在最有意义的位置应用运算符。
另一个原因是,如果将所有 GraphicsMagick 组合和排列都放在传统的联机帮助页中,将会非常麻烦,甚至无法理解。你能想象:
gm convert [[[operators|settings]|[settings|operators]] image] [[settings|operators]|[operators]] ...
【讨论】:
以上是关于GraphicsMagick 的 Convert 命令选项的正确索引位置是啥的主要内容,如果未能解决你的问题,请参考以下文章
graphicsmagick - 将图像转换为 pdf,反之亦然
GraphicsMagick 无法识别 PDF 的背景透明度
Windows下gm打水印老是报gm convert: Unable to read font (n019003l.pfb)问题