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

时间:2019-04-18 10:37:48

标签: 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

由于压缩/解压缩的多个循环,最终图像质量会受到影响。

如何在一个命令中结合以上所有内容?

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

1 个答案:

答案 0 :(得分:2)

首先,在使用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像素,然后将compose方法设置为“ dissolve”。然后将溶解量设置为25%,将重力设置为“中心”,然后将第一个叠加图像合成到源上。它继续为每个连续的覆盖层设置所需的溶解量和重力,并将它们合成为每个先前操作的结果。

最后,设置输出JPG的压缩质量并写入输出文件。结果将是具有多个叠加层的源图像,每个叠加层具有不同的透明胶片和位置,并且全部都在单个命令中完成,以避免整个过程变质。

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

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