Download the PHP package hankchen/php-canvas-next without Composer
On this page you can find all versions of the php package hankchen/php-canvas-next. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Please rate this library. Is it a good library?
Informations about the package php-canvas-next
php-canvas-next
hankchen/php-canvas 的下一代实现:图层树(纯结构)与渲染器(可插拔后端)彻底分离。
Canvas/Layer是纯数据容器,只承载设定与纯布局函数,不含任何渲染状态;- 渲染由 Renderer 驱动:
Renderer::render(Canvas)主动拉取结构树,按图层类型分派绘制; - 本包只含结构、渲染契约与资源物化,位图后端在伴随包 hankchen/php-canvas-image-renderer。
设计文档与对象交互图见 docs/design/layer-renderer-separation.md。
环境要求
- PHP
^8.3、endroid/qr-code^6.0 ext-intl可选(图素簇精确切分,缺失时降级码点切分)- 本包不依赖任何图像扩展;GD/Imagick 由图像渲染后端包引入
安装
快速上手
单图层渲染:(new ImageRenderer())->renderLayer(new NullCancellation(), $layer)。
核心概念
结构与渲染分离
- 图层 setter 不产生任何 I/O;远程图片/字体与二维码的下载、生成由
ResourceResolver(本包)在渲染前统一物化,渲染端只见本地路径; - 容器图层(
TableLayer → TableRowLayer → TableCellLayer)在addRow/addCell/addContentLayer时同步父子尺寸(结构侧契约); - 布局计算(断行、autoHeight、对齐原点)是图层上的纯函数,所有渲染端共享同一结果。
文本断行与度量
默认断行器为 UAX #14 简化实现:图素簇切分(emoji 不拆碎)、CJK 字间可断、
拉丁词边界优先、禁则处理(行首不出现 。,、;:!?」』)】 等,行末不出现 「『(【)。
默认度量器为字符启发式(半角 0.55 字宽),两者均可注入替换:
自定义远程资源下载器(代理、鉴权等):
结构树序列化
graph() 无损携带全部行/单元格/内容与字体完整路径,跨渲染端复用同一份结构。
从 php-canvas 迁移
| 旧(php-canvas) | 新(php-canvas-next) |
|---|---|
Canvas::make(...)->render()->save($p) |
(new ImageRenderer())->render($canvas)->save($p) |
$layer->render() |
(new ImageRenderer())->renderLayer($layer) |
Canvas::getCore() |
render() 的返回值即图像 |
setImage()/setFont() 立即下载 |
setter 只存引用,渲染前由 Resolver 统一物化 |
自定义下载器 $layer->setDownloader() |
new ImageRenderer(new ResourceResolver($downloader)) |
QrCodeLayer::generateQrCodeLayerFromContent($c) |
QrCodeLayer::setText($c)(物化自动进行) |
graph() 的 rowTemplate/cellTemplates |
rows(全量)/cells;字体保存完整路径 |
| — | 新增 Canvas::fromGraph() 反序列化 |
远程资源缓存 sys_temp/canvas/ |
sys_temp/canvas-next/(可与旧库共存) |
| autowrap 字符数断行 | UAX #14 简化断行(词边界 + 禁则),同一文本断行位置可能与旧库不同 |
旧库 hankchen/php-canvas 冻结维护、保持可用;新库不依赖旧库。
开发
渲染目验样图脚本位于 image-renderer 包:php scripts/visual-check.php。测试约定见 AGENTS.md。
All versions of php-canvas-next with dependencies
PHP Build Version
Package Version
The package hankchen/php-canvas-next contains the following files
Loading the files please wait ...