Imagemagick 组合多个同名图像

Imagemagick 组合多个同名图像,imagemagick,image-manipulation,Imagemagick,Image Manipulation,我有一个名为“图像”的文件夹和一个名为“蒙版”的文件夹。“图像”文件夹中有200个图像,“遮罩”文件夹中有200个同名图像(背景透明)。我现在想把两张同名的图片合并在一起,这样“image”文件夹中的图片就在背景中了。图像大小相同 背景图像示例: 示例掩码: 我想用imagemagick应该很容易实现,但我现在不知道这个程序,我发现的例子都非常复杂 我试过这样的方法: convert Images/*.png -draw "image over x,y 0,0 Mask/*.png" com

我有一个名为“图像”的文件夹和一个名为“蒙版”的文件夹。“图像”文件夹中有200个图像,“遮罩”文件夹中有200个同名图像(背景透明)。我现在想把两张同名的图片合并在一起,这样“image”文件夹中的图片就在背景中了。图像大小相同

背景图像示例:

示例掩码:

我想用imagemagick应该很容易实现,但我现在不知道这个程序,我发现的例子都非常复杂

我试过这样的方法:

convert Images/*.png -draw "image over x,y 0,0 Mask/*.png" combined/*.png
是不是因为这条路的缘故,它不起作用了?我必须去打圈吗,还是有简单的方法


谢谢

因为你有很多图像,它会为你做所有的循环和文件名/目录拆分,我会使用GNU并行如下:

mkdir -p combined
parallel 'convert {} Mask/{/} -composite combined/{/}' ::: Images/*png
#!/bin/bash

mkdir -p combined
cd Images

for f in *png; do
    convert "$f" ../Mask/"$f" -composite ../combined/"$f"
done
小心使用
parallel
,并测试您计划使用什么:

parallel --dry-run ...
首先要确定

{}
表示“当前参数”

{/}
表示“从目录部分剥离的当前参数”

指示参数的开始


或者,您可以使用如下循环:

mkdir -p combined
parallel 'convert {} Mask/{/} -composite combined/{/}' ::: Images/*png
#!/bin/bash

mkdir -p combined
cd Images

for f in *png; do
    convert "$f" ../Mask/"$f" -composite ../combined/"$f"
done

我终于找到了一种使用小bash脚本的方法:

#!/bin/bash

for entry in Images/*
do
  name="$(cut -d'/' -f2 <<<"$entry")"
  convert Cells/$name Mask/$name -composite combined/$name
done
#/bin/bash
用于在图像中输入/*
做

name=“$(cut-d'/'-f2您是在Windows上还是在正版操作系统上?请提供用于测试的示例输入图像、掩码和输出图像。@MarkSetchell-delegate one;)Ubuntu 18.10你的样例代码是否使用你想要的,如果你只使用一个图像?@ MarkSetchellI发现了一个方法和另一个命令:“我只是找到了一个非常类似的解决方案。谢谢你,伙计。很高兴你把它工作了。顺便说一下,考虑在每个<代码>加上双引号”。“
在开始转换的行上…,否则如果文件名中有空格,它将不起作用。