合并多个具有相同名称的图像
Combine multiple images with same name
我有一个名为 "Images" 的文件夹和一个名为 "Mask" 的文件夹。在 "Image" 文件夹中有 200 张图像,在 "Mask" 文件夹中有 200 张图像(透明背景)具有相同的名称。我现在想始终合并两张同名图片,因此 "Image" 文件夹中的图片位于背景中。图像大小相同。
示例背景图片:
掩码示例:
我想它应该很容易用 imagemagick 实现,但我现在真的不知道这个程序,我发现的例子都更加复杂。
我试过类似的东西:
convert Images/*.png -draw "image over x,y 0,0 Mask/*.png" combined/*.png
是不是因为路径的问题?我必须循环,还是有简单的方法?
谢谢
因为你有很多图像,它会为你做所有的循环和filename/directory分割,我会像这样使用GNU Parallel:
mkdir -p combined
parallel 'convert {} Mask/{/} -composite combined/{/}' ::: Images/*png
小心 parallel
并测试你打算用什么做:
parallel --dry-run ...
先确定一下。
{}
表示"the current parameter"
{/}
表示"the current parameter stripped of the directory part"
:::
表示参数开始
或者,您可以使用这样的循环:
#!/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
我有一个名为 "Images" 的文件夹和一个名为 "Mask" 的文件夹。在 "Image" 文件夹中有 200 张图像,在 "Mask" 文件夹中有 200 张图像(透明背景)具有相同的名称。我现在想始终合并两张同名图片,因此 "Image" 文件夹中的图片位于背景中。图像大小相同。
示例背景图片:
掩码示例:
我想它应该很容易用 imagemagick 实现,但我现在真的不知道这个程序,我发现的例子都更加复杂。
我试过类似的东西:
convert Images/*.png -draw "image over x,y 0,0 Mask/*.png" combined/*.png
是不是因为路径的问题?我必须循环,还是有简单的方法?
谢谢
因为你有很多图像,它会为你做所有的循环和filename/directory分割,我会像这样使用GNU Parallel:
mkdir -p combined
parallel 'convert {} Mask/{/} -composite combined/{/}' ::: Images/*png
小心 parallel
并测试你打算用什么做:
parallel --dry-run ...
先确定一下。
{}
表示"the current parameter"
{/}
表示"the current parameter stripped of the directory part"
:::
表示参数开始
或者,您可以使用这样的循环:
#!/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