ImageMagick,在转换运算符链中设置相对大小
我需要设置相对于已设置大小的大小。我需要它,因为我的流程涉及到在其他原语中定义原语。乙二醇ImageMagick,在转换运算符链中设置相对大小,imagemagick,Imagemagick,我需要设置相对于已设置大小的大小。我需要它,因为我的流程涉及到在其他原语中定义原语。乙二醇 convert -size 200x100 xc:black \( -size 30x40% xc:red \) -gravity West -composite out.png 如果30x40%不是这样工作的,它将变成30x40像素。在第一个示例中,我可以通过使用resize来实现这个特定目标 convert -size 200x100 xc:black \( xc:red -resize 30x40
convert -size 200x100 xc:black \( -size 30x40% xc:red \) -gravity West -composite out.png
如果30x40%不是这样工作的,它将变成30x40像素。在第一个示例中,我可以通过使用resize来实现这个特定目标
convert -size 200x100 xc:black \( xc:red -resize 30x40% \) -gravity West -composite out.png
在第二个版本中,xc:red继承了200x100的大小,因此-resize可以正常工作。虽然进一步/内部基本体的大小没有减小到60x40,但仍然是200x100,因此在第三个示例中,绿色矩形具有方向横向,而不是纵向
convert -size 200x150 xc:blue \
\( xc:red -resize 50x100% \
\( xc:green -resize 40% \) \
-gravity Center \
-composite \
\) \
-gravity West \
-composite \
out.png
所以绿色区域是80x60像素,200x150的40%。在我介绍xc:green时,我想在重新调整大小后,以某种方式将大小重置为xc:red。我认为您正在尝试创建画布,其中每个画布都是前一个画布大小的一个百分比。可能有一种更简单的方法,但您可以在创建画布时将其保存在MPR“Magick Persistent Register”(命名为RAM块)中,然后调用最新的画布,并在每次执行与此相关的操作时覆盖它:
convert -gravity west -size 200x100 xc:black -write MPR:S \
\( MPR:S -resize 30x40% -fill red -colorize 100 -write MPR:S \) -composite \
\( MPR:S -resize 50x50% -fill blue -colorize 100 -write MPR:S \) -composite \
\( MPR:S -resize 50x50% -fill lime -colorize 100 \) -composite result.png
或者,您可以让您的
bash
/posixshell在一个“算术表达式”中为您执行此操作:
请注意,shell只处理整数数学,因此,如果您的目标是25像素的50%,那么它不会有好的结局…尝试+重新分页,不起作用请说出您想要实现的目标!我有一种思维方式,比如“黑色正方形,颜色右半红色,一半红色,中间放黄色矩形,大小是红色矩形的一半;然后在最后一个黄色矩形的底部放一个蓝色圆圈”;这是一种考虑嵌套元素的方法。我正在将这种思维方式映射到ImageMagick原语中。我知道,经过这样一系列思考后,我可以从内到外重新组合图像。答案被接受,因为我不知道MPR,使用MPR,您可以将大小缓存为图像,然后用所需内容“覆盖”它们。
W=200
H=100
convert -gravity west -size ${W}x${H} xc:black \
\( -size $((W=W*30/100))x$((H=H*40/100)) xc:red \) -composite \
\( -size $((W=W*50/100))x$((H=H*50/100)) xc:blue \) -composite \
result.png