我有一个名为“ Images”的文件夹和一个名为“ Mask”的文件夹。在“图像”文件夹中有200张图像,在“蒙版”文件夹中有200张具有相同名称的图像(透明背景)。我现在想始终将两个具有相同名称的图片组合在一起,因此“ Image”文件夹中的图片位于背景中。图片大小相同。
示例背景图片:
示例蒙版:
我想使用imagemagick可以很容易地做到这一点,但是我现在真的不是这个程序,我发现的例子都更加复杂。
我尝试了类似的方法:
convert Images/*.png -draw "image over x,y 0,0 Mask/*.png" combined/*.png
是不是因为路径不起作用?我是否需要循环,还是有简单的方法?
谢谢
答案 0 :(得分:2)
由于您有很多图像,它将为您完成所有循环和文件名/目录的拆分,因此我将使用 GNU Parallel :
mkdir -p combined
parallel 'convert {} Mask/{/} -composite combined/{/}' ::: Images/*png
请特别注意parallel
并测试您打算如何处理:
parallel --dry-run ...
先确定。
{}
表示“当前参数”
{/}
表示“除去目录部分的当前参数”
:::
表示参数的开头。
或者,您可以使用如下循环:
#!/bin/bash
mkdir -p combined
cd Images
for f in *png; do
convert "$f" ../Mask/"$f" -composite ../combined/"$f"
done
答案 1 :(得分:1)
我终于找到了一种使用小型bash脚本的方法:
#!/bin/bash
for entry in Images/*
do
name="$(cut -d'/' -f2 <<<"$entry")"
convert Cells/$name Mask/$name -composite combined/$name
done