将图像放在其他图像之上,但先调整大小以适合

Put image on top of other image, but resize to fit first

我有两个 png。一个是未知大小(但始终是正方形),第二个是 1024x1024 并且大部分是透明的。我想将第二个放在第一个之上,但首先将其缩小到第一个的大小。

例如image1.png 为 100x100,overlay.png 为 1024x1024。生成的图像大小为 100x100,叠加层缩小到 100x100 并放在源文件的顶部。

到目前为止我得到了这个:

magick convert ~/Downloads/Test\ icon.png  res/drawable/icon.png -gravity center -composite  ~/result.png

但是生成的图像是 1024x1024,而原始图像在中心某处很小。

这将读取两个图像,调整第二个图像的大小以适应第一个图像的尺寸,然后将第二个图像合成到第一个图像的中心。

magick img1.png img2.png \
   -resize %[fx:u.w]x%[fx:u.h] -gravity center -composite output.png

如果在 Windows 中使用,则续行反斜杠“\”应更改为脱字符“^”。如果在 Windows BAT 脚本中使用,单个百分号“%”需要双打“%%”。

编辑添加:工作方式是这样的...将两个图像读入命令。 FX 表达式 "u.w" 和 "u.h" 代表第一个图像的宽度和高度。因此,将第一个图像“调整大小”到它自己的尺寸当然不会改变它。第二个调整大小以适应第一个的尺寸。