使用ImageMagick自动调整大小覆盖两个图像

Mic*_*kin 14 image-manipulation imagemagick image-processing

有没有办法在使用ImageMagick覆盖图像时根据背景大小自动调整叠加图像的大小?我现在使用以下代码:

复合overlay.jpeg background.jpeg result.jpeg

问题是有时叠加和背景的大小不同,我想相应地调整叠加(保持纵横比)并将其置于中心.有没有办法做到这一点?

mpe*_*kov 28

首先,叠加和背景不需要具有相同的尺寸以使复合材料起作用.例如,给出这两个图像:

sydney.png(352x288):

悉尼

jet2.png(128x129):

JET2

请尝试以下命令:

convert -size 352x288 -composite sydney.png jet2.png -geometry 64x64+176+144 -depth 8 test.png

convert -size 352x288 -composite sydney.png jet2.png -geometry 32x32+176+144 -depth 8 test.png
Run Code Online (Sandbox Code Playgroud)
  • -size 指定输出图像尺寸
  • -geometry 指定前景的尺寸和位置

这是我得到的第一个命令:

结果

编辑

这是一个bash脚本,可以在一行中为您完成所有操作:

#!/bin/bash
if [ -z "$3" ]
then
    echo "usage: $0 background.png foreground.png output.png"
    exit 1
fi
bg_size=`identify -format '%wx%h' "$1"`
convert -size $bg_size -composite "$1" "$2" -geometry $bg_size+0+0 -depth 8 "$3"
Run Code Online (Sandbox Code Playgroud)

  • 别客气.我继续写了一个脚本 - 请看我更新的答案. (3认同)