使用

生成偏实操的干净图纸:

from pypindou import generate_pattern

pattern = generate_pattern(
    "input.png",
    palette="mard-221-alfonse-doudou",
    width=58,
    height=58,
    fit="cover",
    max_colors=32,
    prefilter="smooth",
    cleanup="majority",
    cleanup_passes=2,
    min_region_size=3,
)

print(pattern.color_counts())
pattern.to_image(scale=12).save("preview.png")
pattern.save_symbol_chart("symbols.png", cell_size=24)
pattern.save_symbol_chart("symbols.svg", cell_size=24)

save_symbol_chart 支持 PNG 和 SVG 输出;色号文字会自适应缩放并限制在各自 cell 内。

照片输入建议先控制颜色数量,再用清理参数减少孤立色块。prefilter="smooth" 会先弱化照片噪声, cleanup="majority"min_region_size 会让输出更接近可手工摆豆的大色块图纸。

如果更重视照片纹理,可以显式启用 Floyd-Steinberg 抖动:

pattern = generate_pattern(
    "input.png",
    width=58,
    height=58,
    max_colors=48,
    quantize="floyd-steinberg",
    dither_strength=0.5,
)

抖动会增加细碎色块,适合保留渐变和阴影纹理,不建议作为默认实操图纸参数。

色卡资源由 git submodule 生成:

git submodule update --init --recursive
make resource