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 的灵活性的,部分是联机手册的死板的。让我解释一下……

要理解答案,您需要区分settingsoperators。 @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 - 优化蒙太奇和合成的技巧?

GraphicsMagick 无法识别 PDF 的背景透明度

im4java+GraphicsMagick 的问题

Windows下gm打水印老是报gm convert: Unable to read font (n019003l.pfb)问题

ImageMagick 和 GraphicsMagick 有啥区别?