如何运行图像魔术的转换命令

时间:2018-07-03 05:58:29

标签: image-processing

我正在使用以下语法执行Image Magick的转换命令:

magick convert -units pixelsperinch image2.jpg -density 600 out.png

但是没有得到任何结果。如何不使用magick来执行convert命令。

1 个答案:

答案 0 :(得分:0)

如果要在文件中设置值,则需要使用-set

convert image2.jpg -set density 600 -set units pixelsperinch out.png

现在检查我们得到了什么:

identify -verbose out.png | grep -Ei "units|resolution"
Resolution: 236.22x236.22
Units: PixelsPerCentimeter
  png:pHYs: x_res=23622, y_res=23622, units=1

我不确定我有什么好方法可以解释何时需要-set,何时不需要。我会尽力的,如果有人可以改进的话,我会写下改进之处。

我们来看一个示例,例如-size。这是一个“设置” ,这意味着它只是更改并记住内部设置或值,直到命令结束或设置的值有所不同为止,但不会更改任何现有图像。所以,如果我这样做:

convert -size 1024x768 ...

它会设置大小并记住它,如果我随后使用xc:blue或类似的东西,则会按照您期望的大小来创建画布。

但是,如果我这样做:

convert -size 1024x768 xc:blue ... -size 10x10 ...

-size 10x10并没有真正改变现有的1024x768蓝色画布的大小,只是记住以后创建的所有画布都应该是10x10。

因此,-density-units的工作方式与上述设置相同。

现在让我们看一下-set。这是“操作员” ,而不是“设置” 。当您使用“ operator” 时,它将立即将该操作应用于当前加载的所有图像-并可能更改当前加载的所有图像。因此,-resize“操作员” 的另一个示例。使用它时,它将立即调整所有已加载图像的大小。

所以,如果我这样做:

convert image1.jpg image2.jpg -resize 800x600 image3.jpg ...

它将立即将image1.jpgimage2.jpg的大小调整为800x600,但不影响image3.jpg


现在该教程结束了,您可以希望看到想要更改/更改加载的图像,因此您需要使用“ operator” 而不是“ setting” < / em>。