Graphics 后端¶
Graphics 后端提供独立的、进程内 RasterScene 渲染能力。它们不消费PreparedHtml,也不是 HTML EngineProvider;是否启用 Graphics 后端与render.provider 的选择相互独立。
当前中立场景契约包含物理像素画布、背景色和按顺序执行的实色矩形。它不模拟HTML layout、文本 shaping 或后端原生对象。Pillow 与 Skia 遵循同一输入契约,但不承诺生成相同的编码 bytes 或逐 channel 完全一致。
选择后端¶
| 后端 | 适合场景 | 主要约束 |
|---|---|---|
| Pillow | 兼容面优先、普通 CPU 位图输出 | 需要 Pillow 12 或更高版本 |
| Skia | 已部署 Skia 运行环境、需要对应 native renderer | wheel、glibc 和系统图形库存在平台限制 |
两个后端可以同时启用。调用方通过不同的 typed Capability key 明确选择后端,不会自动回退或按环境猜测。
共享配置¶
render:
provider: null
graphics:
backends:
- pillow
- skia
max_pixels: 16777216
max_concurrency: 2
max_commands: 100000
| 路径 | 默认值 | 说明 |
|---|---|---|
render.graphics.backends |
[] |
显式启用的 pillow / skia Capability;不可重复 |
render.graphics.max_pixels |
16777216 |
单场景 width * height 上限,必须大于 0 |
render.graphics.max_concurrency |
2 |
所有 Graphics 后端共享的 native work 并发槽 |
render.graphics.max_commands |
100000 |
单场景 FillRect 命令数量上限 |
backends 为空时不会导入 Pillow 或 Skia。两个后端共享像素、命令和并发预算,不能通过切换后端绕过限制。native draw/encode 由 composition 注入的 worker 执行,不会阻塞异步事件循环。
JPEG 输出先把完整 RGBA 场景合成到不透明 matte,再编码;默认 matte 为白色、quality 为 90。调用模型与错误契约见Capability 参考,环境变量示例见.env 配置。