ImageMagick处理多尺寸PNG时基准图动态平铺执行减法运算问题
解决方案
核心问题原因
你之前遇到的尺寸不匹配、仅左上角运算的问题,根源是两点:
composite命令默认输出尺寸和背景层一致,反向运算时你用16x16的基准做背景,输出自然只有16x16-tile参数仅对顶层图像生效,无法自动把背景层的基准图平铺到匹配尺寸
完整实现脚本(Windows批处理)
先在misc图像所在文件夹新建bat文件,粘贴以下内容:
@echo off :: 提前创建输出目录 if not exist ..\sub mkdir ..\sub if not exist ..\add mkdir ..\add if not exist ..\output mkdir ..\output :: 遍历所有png格式的misc图像 for %%f in (*.png) do ( :: 读取当前misc图像的宽高 for /f "tokens=1,2" %%a in ('magick identify -format "%%w %%h" "%%f"') do ( set W=%%a set H=%%b ) :: 生成和当前misc同尺寸的平铺基准图 magick -size %W%x%H% tile:..\raw.png tiled_raw.tmp.png :: 1. 生成基准减misc的阴影层 magick composite tiled_raw.tmp.png "%%f" -compose minus ..\sub\%%f :: 2. 生成misc减基准的高光层 magick composite "%%f" tiled_raw.tmp.png -compose minus ..\add\%%f :: 3. 合并生成最终Overlay素材(和你GIMP操作逻辑完全一致) magick convert -size %W%x%H% xc:gray50 ^ ..\add\%%f -compose plus -composite ^ ..\sub\%%f -compose minus -composite ^ -colorspace gray -set colorspace sRGB ^ ..\output\%%f ) :: 清理临时文件 del tiled_raw.tmp.png echo 批量处理完成 pause
注意事项
- 确保你的ImageMagick版本是7.x以上,支持
magick主命令调用 - 基准图
raw.png放在misc文件夹的上一级目录,和脚本默认路径匹配,可自行修改路径 - 生成的
output文件夹内就是可以直接用的Overlay混合层素材,尺寸完全和原misc图像一致
内容的提问来源于stack exchange,提问作者Emily Smirle
相关产品推荐
相关产品推荐

