如何将 imagemagick 中的操作限制在图片的下半部分?

如何将 imagemagick 中的操作限制在图片的下半部分?

从下面的命令开始,我想应用-fill red在图片的上半部分和-fill green下半部分。

(我知道我可以分解图片,并在两次-fill操作后重新组装它,但作为该网站的成员,我不应该陷入那么低的水平。)

convert 05.png -fuzz 20% -fill green -opaque white gr.05.png

第二个问题,我可以将两个(或更多)转换链接到一个convert命令中吗?

答案1

嗯,一种方法是通过-region geometry选项。您设置一个区域,应用所需的操作,完成后取消设置该区域;然后您设置另一个区域,应用其他操作,完成后您也取消设置该区域等等...例如,800x600您将运行的图像大小:

convert input.jpg \
-fuzz 20% \
-region '800x300+0+0' -fill green -opaque white +region \
-region '800x300+0+300' -fill red -opaque white +region \
output.jpg

为了避免对图像宽度/高度进行硬编码...在这种情况下,几何图形也可以写为100x50%100%宽度和50%高度的含义),而不是使用预先添加的偏移量-gravity以便-region从顶部或底部开始:

convert input.jpg \
-fuzz 20% \
-gravity North -region '100x50%' -fill green -opaque white \
+region \
-gravity South -region '100x50%' -fill red -opaque white \
+region \
output.jpg

您可以链接多个命令,例如您可以添加到上面的命令-resize-crop...并且您还有所谓的图像堆栈

它允许您单独处理图像或图像序列,然后将结果引入命令行。图像堆栈用括号描绘。图像运算符仅影响当前堆栈中的图像。

相关内容