如何用ImageMagick叠加图片后保留Overlay PNG的原文件名?
解决ImageMagick叠加图片后保留原PNG文件名的问题
要实现用overlays文件夹中PNG的原文件名保存合成后的图片,你需要用-foreach循环逐个处理每个叠加图,这样才能正确捕获每个PNG的文件名信息。之前的命令因为一次性批量处理所有叠加图,%t会默认取主图(main.jpg)的名称,导致输出文件名不符合预期。
正确命令:
magick main.jpg -colorspace sRGB -gravity center ..\Pictures\overlays\*.png -resize 600x600 -geometry -10-30 -compose over -foreach -set filename:orig "%t" "%[filename:orig]_result.png"
命令说明:
-foreach:遍历每个输入的叠加PNG文件,单独执行合成操作,确保每个文件的文件名能被正确捕获-set filename:orig "%t":将当前处理的叠加PNG的基础文件名(不含后缀)存入自定义变量filename:orig"%[filename:orig]_result.png":用捕获到的原PNG文件名加上_result后缀作为输出文件名(你可以根据需求调整后缀部分)
如果希望输出文件名完全和原PNG一致(不需要额外后缀),可以把最后一部分改成:
"%[filename:orig].png"
若要保留原PNG的文件后缀(比如存在非.png格式的叠加图),可以用%e获取原后缀,命令调整为:
"%[filename:orig].%e"
内容的提问来源于stack exchange,提问作者GGalusca
相关产品推荐
相关产品推荐

