vpype

vpype

专为绘图仪设计的多功能矢量图形处理和优化工具

vpype是一款专为绘图仪设计的命令行工具,用于处理和优化矢量图形。它能精确布局矢量文件、优化SVG加快绘图、为老式绘图仪输出HPGL、创建生成艺术作品以及处理多层矢量文件。vpype可通过插件扩展功能,作为Python库还提供了创建生成艺术和绘图仪工具所需的数据结构、实用函数和硬件加速的矢量图形查看器。

vpype矢量图形命令行工具绘图优化SVGGithub开源项目

banner

vpype

PyPI python Downloads license Test codecov Sonarcloud Status Documentation Status Code style: Black

vpype 是绘图矢量图形的瑞士军刀命令行工具。

目录

vpype 是什么?

vpype 是绘图矢量图形的瑞士军刀命令行工具。以下是它的功能:

  • 对现有矢量文件进行精确的位置、比例和页面格式控制的布局;
  • 优化现有SVG文件以实现更快速、更清晰的绘图;
  • 为老式绘图仪创建HPGL输出;
  • 通过内置命令或插件从头开始创建生成艺术作品;
  • 创建、修改和处理多层矢量文件以进行多色绘图;
  • 以及更多...

vpype 高度可扩展,通过插件可以大大扩展其功能。例如,已经存在用于绘制像素艺术用阴影进行半色调处理等的插件。请参阅下面的现有插件列表

vpype 也是一个文档完善Python库, 对创建生成艺术和绘图仪工具很有用。它包括数据结构、实用程序和I/O函数,以及 硬件加速的灵活矢量图形查看器。例如,绘图仪生成艺术环境 vsketch就是基于 vpype 构建的。

查看文档以获取更全面的 vpype 介绍。

它是如何工作的?

vpype 通过构建所谓的_命令_的_管道_来工作,其中每个命令的输出被输送到下一个命令的输入。 一些命令将几何图形加载到管道中(例如 read 命令从SVG文件加载几何图形)。其他命令修改这些几何图形,例如通过 裁剪(crop)或重新排序以最小化笔抬起 移动(linesort)。最后,一些其他命令 仅读取管道中的几何图形以用于显示目的(show) 或输出到文件(write)。

管道是使用 vpype 的CLI(命令行界面)在终端中定义的,方法是输入 vpype 后跟 命令列表,每个命令都带有其可选参数和参数:

命令行 这个流程使用五个命令(以粗体显示):

  • read 从SVG文件加载几何图形。
  • linemerge 合并端点相近的路径(在给定的容差范围内)。
  • linesort 重新排序路径,以最小化笔抬起的移动距离。
  • crop 进行裁剪。
  • write 将生成的几何图形导出为SVG文件。

vpype 中还有许多其他可用的命令,请参阅下方的概览

一些命令有必需的参数(以斜体显示)。例如,read命令必须提供文件路径,crop命令必须提供尺寸。命令也可能有可选项。在本例中,--page-size a4表示write命令将生成A4大小的SVG(否则它将与_in.svg_的大小相同)。同样,因为使用了--center,所以write命令在保存SVG之前会将几何图形居中(否则几何图形将保持在原始位置)。

示例

注意:以下示例使用行尾转义符(\)分布在多行上。这样做是为了突出显示管道由哪些命令组成,在实际使用中通常不会这样做。

加载SVG文件,将其缩放到特定大小,并将其居中导出到A4大小的、可直接绘图的SVG文件中:

$ vpype \ read input.svg \ layout --fit-to-margins 2cm a4 \ write output.svg

优化路径以减少绘图时间(合并相连的线条,排序以最小化笔抬起距离,随机化闭合路径的接缝,并减少节点数):

$ vpype \ read input.svg \ linemerge --tolerance 0.1mm \ linesort \ reloop \ linesimplify \ write output.svg

加载SVG并在vpype的查看器中显示(可以仔细检查图层和路径结构):

$ vpype \ read input.svg \ show

加载多个SVG文件并将它们保存为单个多层SVG文件(例如用于多色绘图):

$ vpype \ forfile "*.svg" \ read --layer %_i% %_path% \ end \ write output.svg

将SVG导出为HPGL格式,用于老式绘图仪:

$ vpype \ read input.svg \ layout --fit-to-margins 2cm --landscape a4 \ write --device hp7475a output.hpgl

在SVG上绘制图层名称(此示例使用属性替换):

$ vpype \ read input.svg \ text --layer 1 "{vp_name}" \ write output.svg

将多个SVG文件合并到网格布局中(此示例使用表达式替换):

$ vpype \ eval "files=glob('*.svg')" \ eval "cols=3; rows=ceil(len(files)/cols)" \ grid -o 10cm 10cm "%cols%" "%rows%" \ read --no-fail "%files[_i] if _i < len(files) else ''%" \ layout -m 0.5cm 10x10cm \ end \ write combined_on_a_grid.svg

上一个示例的交互版本可在examples/grid.vpy中找到。它使用input()表达式向用户询问参数:

$ vpype -I examples/grid.vpy Files [*.svg]? Number of columns [3]? 4 Column width [10cm]? Row height [10cm]? 15cm Margin [0.5cm]? Output path [output.svg]?

将SVG按图层拆分为多个文件:

$ vpype \ read input.svg \ forlayer \ write "output_%_name or _lid%.svg" \ end

更多示例和方法可以在cookbook中找到。

vpype 不是什么?

vpype 专注于绘图仪生成艺术,并不旨在成为通用的(如Illustrator/InkScape)矢量图形工具。其主要原因之一是_vpype_将所有曲线(圆形、贝塞尔曲线等)转换为由小段线条组成的线。_vpype_确实导入了元数据,如描边和填充颜色、描边宽度等,但只部分使用它们,并不旨在与SVG规范保持完全一致。这些设计选择使_vpype_的丰富功能成为可能,但限制了它在印刷媒体等方面的使用。

安装

详细的安装说明可在最新文档中找到。 摘要:

  • 推荐使用 Python 3.12,但 vpype 也兼容 Python 3.10 和 3.11。
  • vpype 发布在 Python 包索引 上,可以使用 pipx 安装:
    pipx install "vpype[all]"
  • 这里 提供了 Windows 安装程序,但使用此方法无法安装插件。
  • 可以使用以下命令安装仅包含命令行界面的 vpype 版本:
    pipx install vpype
    此版本不包含 show 命令,但不需要在某些平台上难以或无法安装的依赖项(如 matplotlib、PySide6 和 ModernGL)。

文档

vpype 命令行界面包含自身的详细文档:

vpype --help # 通用帮助和命令列表 vpype COMMAND --help # 特定命令的帮助

此外,在线文档 提供了关于 vpype 基本原理的广泛背景信息、涵盖大多数常见任务的操作指南、vpype API 文档等更多内容。

功能概览

通用

  • 易于使用的命令行界面,具有集成帮助(vpype --helpvpype COMMAND --help)和支持任意单位(例如 vpype read input.svg translate 3cm 2in)。
  • 一流的多层支持,具有全局或每层处理功能(例如 vpype COMMANDNAME --layer 1,3)和可选的概率性图层编辑命令(lmovelcopyldeletelswaplreverse)。
  • 支持每层和全局属性,作为元数据,被多个命令和插件使用。
  • 支持命令行用户输入中的属性表达式替换
  • 支持复杂的每层处理(perlayer)。
  • 强大的硬件加速显示命令,具有可调整的单位、可选的每线着色、可选的笔抬轨迹显示和每层可见性控制(show)。
  • 几何统计提取(stat)。
  • 支持命令历史记录(vpype -H [...])。
  • 支持生成插件的随机数生成器种子配置(vpype -s 37 [...])。

输入/输出

  • 单层和多层 SVG 输入,具有可调整的精度、大型 SVG 的并行处理,支持百分比或缺失宽度/高度(read)。
  • 支持 SVG 输出,具有精细的布局控制(页面大小和方向、居中)、图层支持和自定义图层名称、可选的笔抬轨迹显示、各种着色选项(write)。
  • 支持基于配置的 HPGL 输出生成,具有精细的布局控制(页面大小和方向、居中)。
  • 支持基于模式的文件集合处理(forfile)。

布局和变换

  • 简单灵活的布局命令,用于居中和适应边距,可选择水平和垂直对齐(layout)。
  • 页面旋转命令(pagerotate)。
  • 强大的变换命令,用于缩放、平移、倾斜和旋转几何图形(scaletranslateskewrotate)。
  • 支持任意尺寸的缩放裁剪scaletocrop)。
  • 支持任意数量的几何图形修剪trim)。
  • 任意页面大小定义(pagesize)。

元数据

绘图优化

  • 线条合并,支持可选的路径反转和可配置的合并阈值(linemerge)。
  • 线条排序,支持可选的路径反转(linesort)。
  • 可调节精度的线条简化linesimplify)。
  • 闭合路径的接缝位置随机化,以减少笔抬起/落下的痕迹(reloop)。
  • 支持对每条线生成多次通过multipass)。

滤镜

  • 支持按线长或闭合性进行过滤filter)。
  • 扭曲滤镜,用于手抖或液体般的风格效果(squiggles
  • 支持将所有线条拆分为其组成段(splitall)。
  • 支持反转图层内路径的顺序(reverse)。
  • 支持按绘制距离拆分图层(splitdist

生成

  • 生成任意基本图形,包括线条、矩形、圆形、椭圆和弧线(linerectcircleellipsearc)。
  • 使用内置的赫西字体生成文本text
  • 生成网格状布局(grid)。
  • 在几何图形周围生成边框frame)。
  • 生成用于调试/学习目的的随机线条(random

可扩展性和API

插件

以下是已知的vpype插件列表(如果您的插件未列出,请提交拉取请求):

贡献

欢迎为本项目做出贡献,这并不一定需要软件开发技能!请查看文档中的贡献部分以获取更多信息。

许可证

本项目采用MIT许可证 - 详情请参阅LICENSE文件。

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多