#dynamic-image #generator #dynamic #image #server #cli

应用 dynimgen

一个自托管的动态图像生成器

2 个不稳定版本

0.2.0 2022 年 6 月 7 日
0.1.0 2022 年 6 月 6 日

#796HTTP 服务器

MIT/Apache

22KB
369

dynimgen

CI Crates

一个自托管的动态图像生成器。

如何使用

步骤 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>

例如

构建 URL

http://localhost:8080/poster1?img=https://picsum.photos/250&qr=dynimgen&code=12345

如果请求此 URL,dynimgen 将响应一个 png 图像。

dynimgen 做什么

  1. 从请求的 URL 查询中提取变量
  2. 将变量传递给模板引擎以生成 svg
  3. 将 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 作为模板引擎。它基于 Jinja2Django 模板的语法。

有关 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