跳转到主要内容

Drawbot实现了一个简单的绘图API,用于生成2D矢量图形

项目描述

Run tests

drawbot-skia

一个使用Skia作为后端的Python包,实现了DrawBot API的一个子集。

正在进行中!

路线图

  1. 使基本形状正常工作 ✅
  2. 使基本颜色正常工作 ✅
  3. 使最小的BezierPath对象正常工作 ✅
  4. 使变换正常工作 ✅
  5. 使单行、单风格的text()正常工作 ✅
  6. 使可变字体正常工作 ✅
  7. 使HarfBuzz成形正常工作 ✅
  8. 使OpenType功能正常工作 ✅
  9. 使PNG、JPEG图像导出正常工作 ✅
  10. 使PDF导出正常工作 ✅
  11. 使MP4导出正常工作 ✅
  12. 使SVG导出正常工作 ✅
  13. 使动画GIF导出正常工作
  14. 使多行、单风格的text()正常工作
  15. 使FormattedString正常工作
  16. 使多风格的text()正常工作
  17. 使剩余的BezierPath方法正常工作
  18. 使许多我忘记提到的功能正常工作
  19. ...
  20. textBox() 🔴 (主要障碍)
  21. 填补DrawBot API的更多差距

目前支持的Drawbot子集在此跟踪

愿景

本项目是一个纯Python包,实现了(部分)DrawBot绘图API。使用Skia(skia-python)可以确保跨平台实现。

可以开发类似于DrawBot的跨平台应用程序外壳,但这将是另一个项目。期待未来的drawbot-qtdrawbot-wxdrawbot-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应用程序中点击“运行”一样。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

drawbot-skia-0.5.1.tar.gz (2.3 MB 查看哈希

上传时间

构建分布

drawbot_skia-0.5.1-py3-none-any.whl (28.2 kB 查看哈希

上传于 Python 3

由以下支持