2 个不稳定版本
0.2.0 | 2022 年 6 月 7 日 |
---|---|
0.1.0 | 2022 年 6 月 6 日 |
#796 在 HTTP 服务器
22KB
369 行
dynimgen
一个自托管的动态图像生成器。
如何使用
步骤 1:设计师将设计图纸导出为 svg 文件
<svg>
<rect />
<image src="img.png" />
<image src="qr.png" />
<text>66666</text>
</svg>
步骤 2:工程师编辑 svg 文件,将更改的部分替换为模板变量
<svg>
<rect />
<img src="{{ img | fetch }}">
<img src="{{ qr | to_qr }}">
<text>{{ code }}</text>
</svg>
步骤 3:运行 dynimgen
,确保 svg 模板位于 dynimgen
的工作目录中
$ ls data
poster1.svg
$ dynimgen fixtures/
[2022-06-05T14:51:53Z INFO dynimgen::generator] Mount `/poster1`
[2022-06-05T14:51:53Z INFO dynimgen] Listen on 0.0.0.0:8080
步骤 4:根据以下规则构建图像 URL
<domain> + <template path> + ? + <template variables>
例如
- 域名:http://localhost:8080
- 模板路径:/poster1
- 模板变量:{ img: "https://picsum.photos/250", qr: "dynimgen", code: 12345 }
构建 URL
http://localhost:8080/poster1?img=https://picsum.photos/250&qr=dynimgen&code=12345
如果请求此 URL,dynimgen 将响应一个 png 图像。
dynimgen 做什么
- 从请求的 URL 查询中提取变量
- 将变量传递给模板引擎以生成 svg
- 将 svg 渲染为 png 然后响应
优势
服务器端渲染优势
- 没有浏览器兼容性、平台兼容性问题等
- 代码复用性高,h5、小程序和应用程序的海报生成服务可以使用。
- 可以及时方便地更新
SVG 模板优势
- 直接从 PS/AI 等设计软件导出 SVG
- 无需用 html/canvas/dsl 重新实现
- 无损恢复设计草稿,不丢失任何细节
- 可自由使用字体样式
RUST 优势
- 高性能,高并发
- 单个可执行程序,跨平台,易于部署
安装
与 cargo 配合使用
cargo install dynimgen
与 docker 配合使用
docker run -v `pwd`/data:/data -p 8080:8080 --rm -it sigoden/dynimgen /data
提供 macOS、Linux、Windows 的二进制文件
从 GitHub 发布 下载,解压缩并将 duf 添加到您的 $PATH。
模板引擎
dynimgen 使用 Tera 作为模板引擎。它基于 Jinja2 和 Django 模板的语法。
有关 Tera 文档 中关于 控制结构、内置过滤器 等更多信息,请参阅。
dynimgen 使用自定义内置过滤器
fetch
获取远程资源并编码为 data-url
示例:{{ img | fetch }}
{{ img | fetch(timeout=10000) }}
to_qr
将文本转换为二维码
示例:{{ qr | to_qr }}
{{ qr | to_qr(bg='#fff', fg='#000') }}
许可证
版权(c)2022 dynimgen-developers。
dynimgen 可在 MIT 许可证或 Apache 许可证 2.0 的条款下提供,任选其一。
请参阅 LICENSE-APACHE 和 LICENSE-MIT 文件以获取许可证详情。
依赖项
~18–29MB
~461K SLoC