gpt4 book ai didi

ImageMagick,在转换运算符链中设置相对大小

转载 作者:行者123 更新时间:2023-12-04 10:22:27 25 4
gpt4 key购买 nike

我需要设置相对于已设置大小的大小。我需要它,因为我的流程涉及在其他流程中定义原语。例如

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 的大小。

最佳答案

我认为您正在尝试创建 Canvas ,其中每个 Canvas 都是前一个 Canvas 大小的百分比。可能有一种更简单的方法,但是您可以在创建时将每个 Canvas (以及隐含的大小)保存在 MPR“Magick Persistent Register”(命名为 RAM block )中,然后调用最新的 Canvas 并在每次需要时覆盖它做一些与此相关的事情:

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

enter image description here

或者,您可以让您的 bash/POSIX shell 在“算术表达式”中为您执行此操作:
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

enter image description here

请注意,shell 只处理整数数学,所以如果你的目标是 25 像素的 50%,它不会很好地结束......

关于ImageMagick,在转换运算符链中设置相对大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60790103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com