如何在 imagemagick 中的一个命令中组合一个调整大小和 3 个复合命令?

How to combine one resize and 3 composite commands in one command in imagemagick?

目前我要做的事情:

convert src.jpg -resize 600 -quality 70 -colorspace sRGB scaled_images/one.jpg

composite -dissolve 25% -gravity center overlay_image1.png scaled_images/one.jpg   scaled_images/one.jpg

composite -dissolve 60% -gravity southeast overlay_image2.png scaled_images/one.jpg   scaled_images/one.jpg

composite -dissolve 85% -gravity north overlay_image3.png scaled_images/one.jpg   scaled_images/one.jpg

由于 compression/decompression 的多次循环,最终图像质量会受到影响。

如何将以上所有内容合并到一个命令中?

我正在使用 imagemagick 版本 7.0.8-40。

首先,当使用 ImageMagick 版本 7 时,您应该使用命令 "magick" 而不是 "convert"。也就是说,这是一个示例,它应该可以在一个命令中完成您想要完成的事情...

magick src.jpg -resize 600 -compose dissolve \
   -define compose:args=25 -gravity center overlay1.png -composite \
   -define compose:args=60 -gravity southeast overlay2.png -composite \
   -define compose:args=85 -gravity north overlay3.png -composite \
   -quality 70 one.jpg

首先读取输入图像,将其大小调整为 600 像素,然后将合成方法设置为 "dissolve"。然后它将溶解量设置为 25%,将重力设置为 "center",并将第一个叠加图像合成到源上。它继续为每个连续叠加设置所需的溶解量和重力,并将它们合成到每个先前操作的结果中。

通过设置输出JPG 的压缩质量并写入输出文件来结束。结果将是具有多个叠加层的源图像,每个叠加层具有不同的透明度和位置,所有这些都在一个命令中完成,以避免在整个过程中退化。

如果您 运行 在 Windows 上,您需要将那些连续的反斜杠“\”更改为脱字符“^”。

另请注意,如果您确实需要保存并重新读取中间文件,则不应将它们保存为 JPG 格式,因为每次迭代都会降低质量。