如何使用ImageMagick命令行生成多色横条旗帜图像
多横条色块旗帜的ImageMagick命令行生成方案
使用ImageMagick自带的拼接参数即可直接生成目标图像,无需生成中间临时文件。
核心规则
- 上下纵向排列色块使用
-append参数,左右横向拼接使用+append参数,二者不要混淆 - 每个单色块宽度与最终旗帜总宽度一致,单块高度 = 旗帜总高度 / 色块总数
- 色块参数按从上到下的排列顺序,依次写在
-append参数之前即可
4色横条旗帜示例
以总尺寸1800x900、色值列表#c72b40,#e7919d,#0a8683,#e7919d为例,4个色块单块高度为225px,直接执行以下命令:
convert \ -size 1800x225 xc:#c72b40 \ -size 1800x225 xc:#e7919d \ -size 1800x225 xc:#0a8683 \ -size 1800x225 xc:#e7919d \ -append flag_4stripe.png
5色横条旗帜示例
总尺寸保持1800x900时,5个色块单块高度为180px,按从上到下的顺序替换对应色值即可:
convert \ -size 1800x180 xc:色值1 \ -size 1800x180 xc:色值2 \ -size 1800x180 xc:色值3 \ -size 1800x180 xc:色值4 \ -size 1800x180 xc:色值5 \ -append flag_5stripe.png
色值既支持十六进制hex格式,也支持rgb(255,0,0)这类RGB写法。
简化批量写法
色块数量较多时,可以结合shell循环自动拆分色值列表生成参数,无需手动逐行书写色块配置,4色示例可简化为:
convert $(for c in $(echo "#c72b40,#e7919d,#0a8683,#e7919d" | tr ',' '\n'); do echo "-size 1800x225 xc:$c"; done) -append flag_auto.png
切换为5色模式时,仅需修改单块高度参数、替换对应色值列表即可。
注意:ImageMagick 7及以上版本请将命令开头的
convert替换为magick,其余参数逻辑完全一致。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

