如何将特定洋红色系颜色范围统一为纯洋红色(#ff00ff)?
解决方法
核心思路是先把所有接近洋红色的过渡像素统一替换成纯#ff00ff,再用kmeans生成256色索引图,这样既保证透明遮罩的准确性,又不会过度压缩其他颜色导致画质下降。
基础有效命令
magick "$PNG_FILE" -fuzz 15% -fill "#ff00ff" -opaque "#ff00ff" -kmeans 256 "$PCX_FILE"
参数解释
-fuzz 15%:设置颜色匹配的容差,15%足以覆盖抗锯齿产生的粉红过渡像素,可根据实际效果调整为10%-20%。-fill "#ff00ff" -opaque "#ff00ff":把所有在容差范围内的洋红色系像素,强制替换成纯#ff00ff。-kmeans 256:基于处理后的原图生成256色索引图,此时纯洋红色会自然加入调色板,无需额外指定seed。
进阶:确保洋红色在调色板首位
如果UE1要求透明色必须是调色板第一个颜色,可以用下面的命令调整调色板顺序:
# 先处理图片并提取调色板 magick "$PNG_FILE" -fuzz 15% -fill "#ff00ff" -opaque "#ff00ff" -write mpr:processed +delete \ mpr:processed -unique-colors -write mpr:palette +delete \ # 把洋红色移到调色板第一位 mpr:palette -swap 0 $(magick mpr:palette -format "%[fx:indexOf('#ff00ff')]" info:) -write mpr:sorted_palette +delete \ # 用排序后的调色板重新映射图片 mpr:processed -remap mpr:sorted_palette "$PCX_FILE"
内容的提问来源于stack exchange,提问作者Artifechs
相关产品推荐
相关产品推荐

