Drawbot实现了一个简单的绘图API,用于生成2D矢量图形
项目描述
drawbot-skia
一个使用Skia作为后端的Python包,实现了DrawBot API的一个子集。
正在进行中!
路线图
- 使基本形状正常工作 ✅
- 使基本颜色正常工作 ✅
- 使最小的
BezierPath
对象正常工作 ✅ - 使变换正常工作 ✅
- 使单行、单风格的
text()
正常工作 ✅ - 使可变字体正常工作 ✅
- 使HarfBuzz成形正常工作 ✅
- 使OpenType功能正常工作 ✅
- 使PNG、JPEG图像导出正常工作 ✅
- 使PDF导出正常工作 ✅
- 使MP4导出正常工作 ✅
- 使SVG导出正常工作 ✅
- 使动画GIF导出正常工作
- 使多行、单风格的
text()
正常工作 - 使
FormattedString
正常工作 - 使多风格的
text()
正常工作 - 使剩余的
BezierPath
方法正常工作 - 使许多我忘记提到的功能正常工作
- ...
textBox()
🔴 (主要障碍)- 填补DrawBot API的更多差距
目前支持的Drawbot子集在此跟踪。
愿景
本项目是一个纯Python包,实现了(部分)DrawBot绘图API。使用Skia(skia-python)可以确保跨平台实现。
可以开发类似于DrawBot的跨平台应用程序外壳,但这将是另一个项目。期待未来的drawbot-qt
、drawbot-wx
、drawbot-win
或任何drawbot-*
项目!
兼容性说明
DrawBot API的一些部分可能难以或实际上无法复制。
Skia只提供对文本的低级支持,因此我们需要自行处理Unicode处理、换行、连字符和形状。换句话说,textBox()
将是一个难题。
通常,与DrawBot的100%文本兼容性不应是首要任务,因为匹配CoreText行为将是一个巨大的挑战。
ImageObject
严重依赖内置的macOS功能,而且功能非常强大。我们最多只能支持其中的一小部分,但这也是低优先级。
策略
到目前为止,没有重用现有的DrawBot代码。可能只有少量片段会被复制,也可能测试套件的一部分会被调整。除此之外,我希望这是一个独立的项目,并希望利用Skia的最大功效,同时考虑到效率和性能。DrawBot与macOS的紧密联系使得平台中立代码的重用几乎不可能。
可能,一些高级代码可以共享(例如,使用低级原语的绘图代码),但这将留待以后观察。
安装
安装最新版本的最快方法是使用pip
pip install drawbot-skia
针对Windows的说明:skia-python只支持Python的64位版本,因此drawbot-skia也是如此,因此请确保您使用的是x86-64 Python安装程序之一。
如果您想查看源代码并可能做出贡献:克隆仓库,并在根目录中执行pip install -e .
使用方法
要将DrawBot脚本适配到drawbot-skia
,您可以执行以下操作之一
- 在脚本顶部添加
from drawbot_skia.drawbot import *
- 或者
import drawbot_skia.drawbot as db
,如果这是您首选的风格
或者您可以使用命令行的drawbot
运行工具
drawbot mydrawbotscript.py output.png
使用drawbot
运行工具,您不需要在脚本中添加任何Drawbot导入,也不需要saveImage(...)
来导出结果。它几乎就像在经典Drawbot应用程序中点击“运行”一样。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。