【问题标题】:Use Pyembroidery to Convert Vector File to .DST embroidery file使用 Pyembroidery 将矢量文件转换为 .DST 刺绣文件
【发布时间】:2019-12-27 03:00:26
【问题描述】:

我正在寻找一种将矢量文件 (.svg) 自动转换为 .dst 刺绣文件的解决方案。我一直在研究 pyembroidery,并且在我开始尝试之前想知道这是否可能。这些文件将只是开始保持简单的文本。

【问题讨论】:

    标签: python svg vector printing dst-embroidery


    【解决方案1】:

    Bonafides:pyembroidery 的作者,svgelements 的作者。

    是和不是。是的,您可以获取普通矢量文件并将矢量方向轻松转换为刺绣。所以你得到了一个 svg 路径,你可以把这个笔画变成一个 dst。你只需几行就可以做到这一点。以下是这些行:

    import glob
    
    from pyembroidery import *
    from svgelements import *
    
    for svg_file in glob.glob("*.svg"):
        pattern = EmbPattern()
        for element in SVG.parse(svg_file, transform="scale(%f)" % (254.0 / 96.0)):
            if isinstance(element, Shape):
                element = Path(element)
            if isinstance(element, Path):
                for subpath in element.as_subpaths():
                    subpath = Path(subpath)
                    distance = subpath.length(error=1e7, min_depth=4)
                    segments = int(distance / 20.0)
                    points = [subpath.point(i / float(segments)) for i in range(int(segments)+1)]
                    points = [(p.x, p.y) for p in points]
                    pattern.add_block(points, subpath.stroke)
        PyEmbroidery.write(pattern, svg_file + ".dst")
    

    这将加载当前目录中的所有 svg 文件并将它们转换为 dst 文件。 svg 库是我也在 pypi 上编写的另一个项目。它可能是 python 上最好的 svg 代码。有些速记与 svg.path 有点相关,有些可能看起来有点神奇,但该库允许通过 svg 转换字符串进行乘法运算。 (254.0 / 96.0) 位是因为在现代 svgs 中,原生路径单位通常为每英寸 96 像素,而 dst 文件的原生分辨率为每单位 0.1 毫米。所以那里的变换使单位完全相等。

    现在回答“否”部分。填充转换实际上有点困难。有两种算法来执行主要的洪水填充,最难的一种是 tatsumi,需要对合并和拆分节点进行大量调整,并将形状绘制成可扫描的几何图形以及一些有点棘手的额外内容。更简单的是欧拉填充,它需要将填充的形状变成欧拉图并删除一些边缘。它实际上在可执行代码的范围内。它是 InkStitch 的基础代码,InkStitch 是当今主要的 inkscape 插件刺绣程序。在我因建设性批评而被作者永久禁止之前,pyembroidery 是作为后端 I/O 东西编写的。

    如果你只想要笔画。完毕。拿去银行。如果您想要填充,数学变得比简单的刺绣/IO 模块更难。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-06
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      相关资源
      最近更新 更多