来自复合堆栈的Imagemagick命名

来自复合堆栈的Imagemagick命名,imagemagick,Imagemagick,在这里,我想重用堆栈中的文件名image123,如何重用复合堆栈中的命名 magick composite-gravity center-geometry+0+200\(image123.png-设置文件名:origin%t\u op-调整大小“150%”-colorspace gray\)background.png“%[filename:origin]”。jpg在大多数情况下使用ImageMagick v7时,不需要使用子命令“composite”。只要用“魔法” 要使用输入文件名作为输出文

在这里,我想重用堆栈中的文件名image123,如何重用复合堆栈中的命名


magick composite-gravity center-geometry+0+200\(image123.png-设置文件名:origin%t\u op-调整大小“150%”-colorspace gray\)background.png“%[filename:origin]”。jpg

在大多数情况下使用ImageMagick v7时,不需要使用子命令“composite”。只要用“魔法”

要使用输入文件名作为输出文件名,您必须对IM的内置特殊变量“filename:”进行一些复杂的管理。在命令开头附近,将带有“-set option:var”的变量设置为第一个输入文件的文件名。然后在接近命令末尾时,使用第一个变量设置特殊的“filename:”变量。试试这样的

magick image123.png -set option:var "%[t]" -resize "150%" \
   -colorspace gray background.png +swap -gravity center \
   -geometry +0+200 -composite -set filename:f "%[var]" "%[filename:f].jpg"

您可能需要更改某些双引号“单打”。

您需要使用magick,而不是magick composite。后者不支持-set文件名。此外,当在复合上执行-compose时,我不相信-set文件名将直接用于覆盖图像,而仅用于背景图像。也就是说,它必须是magick命令行中的第一个图像

但是,这里有一种解决方法,可以颠倒图像的顺序,因此首先使用覆盖,然后使用“dstover”而不是“over”作为合成方法

背景图像:

覆盖图像:


添加:

下面是一个类似的解决方案,可以自动获取维度

magick logo.png -set option:dims "%wx%h" -write mpr:logo +delete \
rose.png -set filename:origin "%t_op" -resize '150%' -colorspace gray \
-background none -gravity center -extent "%[dims]-0-100" \
mpr:logo -compose dstover -composite \
'%[filename:origin].jpg'

很好,吉麦克。我没有想到双设置选项和双设置文件名。太棒了!这真是太棒了!我喜欢你的解决方案,因为它保留了我脚本中的原始规范。你能解释一下为什么使用
+swap
吗?当使用“magick”进行覆盖时,背景图像必须在列表中的第一位,因为它首先被放在画布上。(这与“composite”命令的工作方式相反。)由于示例命令首先读取覆盖图像,然后读取背景图像,“+swap”切换这两个图像的位置,因此背景将位于“-composite”操作的底部。“%[var]”是一个用户定义的变量集,带有
-set选项:var“something”
。你几乎可以用任何名字来称呼它。“%[t]”是一个内置IM变量,它保存列表中(通常)第一个图像的文件名。使用上面的示例命令可能有点棘手。你可以找到更多关于IM的百分比转义变量。谢谢你的解释。它没有产生我想要的结果,因为我不想设置硬编码的维度。我想让它保持动态。如果排列正确,可以使用背景图像中的设置选项保存尺寸。但GeeMack的解决方案要好得多。有关如何避免方法中的硬维度,请参阅我的补充内容。然而,GeeMack的解决方案更好。
magick logo.png -set option:dims "%wx%h" -write mpr:logo +delete \
rose.png -set filename:origin "%t_op" -resize '150%' -colorspace gray \
-background none -gravity center -extent "%[dims]-0-100" \
mpr:logo -compose dstover -composite \
'%[filename:origin].jpg'