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

Posted

技术标签:

【中文标题】使用 ImageMagick 自动调整大小覆盖两个图像【英文标题】:Overlaying two images with automatic resize using ImageMagick 【发布时间】:2011-06-15 16:29:48 【问题描述】:

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

复合叠加层.jpeg 背景.jpeg 结果.jpeg

问题是有时叠加层和背景的大小不同,我想相应地调整叠加层的大小(保持纵横比)并将其放置在中心。有什么办法吗?

【问题讨论】:

【参考方案1】:

首先,叠加层和背景不需要相同大小才能使合成起作用。例如,给定这两张图片:

sydney.png (352x288):

jet2.png (128x129):

尝试以下命令:

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
-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"

【讨论】:

所以为-size-geometry 开关指定相同的大小。例如:convert -size 352x288 -composite sydney.png jet2.png -geometry 352x288+0+0 -depth 8 test.png 将拉伸飞机以适应图像窗口。 嗯 - 这可以工作,但我事先不知道图像的大小,所以如果它可以自动拉伸或其他什么会很好。 您可以使用以下 bash 命令找到图像的大小:size=identify -format '%wx%h' filename.png`,然后将其用于 bash 脚本。不幸的是,Imagemagick 似乎没有-autostretchorwhatever 开关。 好的,这就是我刚刚所做的 - 效果很好,非常感谢! 不客气。无论如何,我继续为您写了一个脚本 - 请参阅我的更新答案。

以上是关于使用 ImageMagick 自动调整大小覆盖两个图像的主要内容,如果未能解决你的问题,请参考以下文章

使用 imagemagick 将垫调整大小的蒙版应用于裁剪调整大小的图像

imagemagick:调整大小后如何获取图像大小?

使用 ImageMagick 调整大小,然后从命令行裁剪图像

sh 使用imagemagick调整图像大小

使用ImageMagick批量调整大小

使用Imagemagick批量调整图像大小