能否用ImageMagick将图像按颜色拆分为同分辨率的单个PNG?
用ImageMagick实现按颜色分离图像
完全可以用ImageMagick实现你的需求,下面是具体操作步骤:
1. 提取图像中的所有唯一颜色
首先执行以下命令,获取输入图像里的所有独特颜色:
convert input.png -unique-colors txt:-
命令输出会列出图像中所有存在的颜色(格式为坐标: 颜色值),比如示例笑脸图会输出黄色、蓝色、黑色这三个颜色。
2. 批量生成单颜色图像
使用bash循环,针对每个颜色生成仅保留该颜色的PNG文件(其余区域设为透明):
# 提取所有唯一颜色值 colors=$(convert input.png -unique-colors txt:- | grep -v "^#" | awk '{print $2}') # 循环处理每个颜色 count=1 for color in $colors; do convert input.png -fill none -fuzz 0% -opaque "$color" "single_color_$count.png" count=$((count+1)) done
参数说明:
-fuzz 0%:精确匹配目标颜色,若允许相近色匹配可调整数值(如5%)-opaque "$color":将所有不是该颜色的像素替换为透明(由-fill none指定)- 输出文件按序号命名,也可修改为用颜色值命名(如
yellow_face.png)
执行后,每个输出文件都会保持原图像16x16的分辨率,且仅保留一种颜色。如果输入图像有10种颜色,会自动生成10个对应PNG文件。
内容的提问来源于stack exchange,提问作者Doug Smith
相关产品推荐
相关产品推荐

