Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/qbhy/poster-generater
⚡⚡⚡海报生成器. 只需要一个简单的 json 配置即可生成你需要的海报...
https://github.com/qbhy/poster-generater
Last synced: 1 day ago
JSON representation
⚡⚡⚡海报生成器. 只需要一个简单的 json 配置即可生成你需要的海报...
- Host: GitHub
- URL: https://github.com/qbhy/poster-generater
- Owner: qbhy
- License: mit
- Created: 2018-12-18T07:35:15.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-06-27T19:56:03.000Z (7 months ago)
- Last Synced: 2024-12-31T21:07:11.587Z (8 days ago)
- Language: Java
- Homepage: https://blog.janguly.com/poster
- Size: 86.1 MB
- Stars: 641
- Watchers: 15
- Forks: 176
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# poster-generater
⚡⚡⚡海报生成器. 只需要一个简单的 json 配置即可生成你需要的海报...## 相关文档
[使用文档](https://github.com/qbhy/poster-generater/wiki)
[REST API](https://github.com/qbhy/poster-generater/wiki/REST-API)
[常见问题](faq.md)## Star History
![https://api.star-history.com/svg?repos=qbhy/poster-generater&type=Date](https://api.star-history.com/svg?repos=qbhy/poster-generater&type=Date)## 新版功能更丰富
* 基于 java 开发,部署和二次开发更方便
* 图片将上传到 公共 CDN,不占用主机磁盘,且速度更快
* 支持结果缓存,相同的 海报配置 不会重复渲染,一次渲染持续保存,速度更快
* 添加删除结果 API
* 支持自定义字体,运行目录下新建 fonts 文件夹,里面放 ttf 格式字体就行。
* 支持模板图片,减少网络图片加载,运行目录下新建 templates 文件夹,支持多种图片格式。
* 缓存网络图片,减少网络图片加载
* 支持企业定制化开发部署,详情请联系我
> ps:自定义字体、模板图片、网络图片缓存路径均可配置。具体配置参考 [example.application.properties](https://github.com/qbhy/poster-generater/blob/master/example.application.properties)
>## 使用docker快速启动
```
$ docker run -d -p 8000:8000 qbhy/poster-generator:latest
```
## 直接获取图片API接口
```
http://127.0.0.1:8000/poster/render
```
## 压测
```bash
$ wrk -c 1000 -t 4 -s wrk.lua http://127.0.0.1:8000/wrk
```
结果如下
```
Running 10s test @ http://127.0.0.1:8000/wrk
4 threads and 1000 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 763.65ms 530.89ms 2.00s 61.96%
Req/Sec 177.08 78.36 435.00 68.26%
5756 requests in 10.06s, 2.22MB read
Socket errors: connect 0, read 890, write 3, timeout 106
Requests/sec: 572.28
Transfer/sec: 225.82KB
```## 组件参数解释
### config字段
| 字段 | 类型 | 必填 | 描述 |
| --------------- | ------------------------ | ---- | ------------------------------------------ |
| width | Number(单位:px) | 是 | 画布宽度 |
| height | Number(单位:px) | 是 | 画布高度 |
| backgroundColor | String | 否 | 画布颜色 |
| blocks | Object Array(对象数组) | 否 | 看下文 |
| texts | Object Array(对象数组) | 否 | 看下文 |
| images | Object Array(对象数组) | 否 | 看下文 |
| lines | Object Array(对象数组) | 否 | 看下文 |### blocks字段
| 字段名 | 类型 | 必填 | 描述 |
| --------------- | ---------------- | ---- | -------------------------------------- |
| x | Number(单位:px) | 是 | 块的坐标 |
| y | Number(单位:px) | 是 | 块的坐标 |
| width | Number(单位:px) | 否 | 如果内部有文字,由文字宽度和内边距决定 |
| height | Number(单位:px) | 是 | |
| paddingLeft | Number(单位:px) | 否 | 内左边距 |
| paddingRight | Number(单位:px) | 否 | 内右边距 |
| borderWidth | Number(单位:px) | 否 | 边框宽度 |
| borderColor | String | 否 | 边框颜色 |
| backgroundColor | String | 否 | 背景颜色 |
| borderRadius | Number(单位:px) | 否 | 圆角 |
| text | Object | 否 | 块里面可以填充文字,参考texts字段解释 |
| index | Int | 否 | 层级,越大越高 |### texts字段
| 字段名 | 类型 | 必填 | 描述 |
| -------------- | ---------------- | ---- | ------------------------------------------------------------ |
| x | Number(单位:px) | 是 | 坐标 |
| y | Number(单位:px) | 是 | 坐标 |
| text | String\|Object | 是 | 当Object类型时,参数为text字段的参数,marginLeft、marginRight这两个字段可用(示例请看下文) |
| fontSize | Number(单位:px) | 是 | 文字大小 |
| color | String | 否 | 颜色 |
| lineHeight | Number(单位:px) | 否 | 行高 |
| lineNum | Int | 否 | 根据宽度换行,最多的行数 |
| width | Number(单位:px) | 否 | 没有指定为画布宽度,默认为x轴右边所有宽度 |
| baseLine | String | 否 | top\| middle\|bottom基线对齐方式 |
| textAlign | String | 否 | left\|center\|right对齐方式 |
| index | Int | 否 | 层级,越大越高 |
| font | String | 否 | 默认字体为'pingfangtf' ,支持自定义字体 |### images字段
| 字段 | 类型 | 必填 | 描述 |
| ------------ | ---------------- | ---- |--------------------------|
| x | Number(单位:px) | 是 | 右上角的坐标 |
| y | Number(单位:px) | 是 | 右上角的坐标 |
| url | String | 是 | 图片url,支持base64、本地图片 |
| width | Number(单位:px) | 是 | 宽度 |
| height | Number(单位:px) | 是 | 高度 |
| borderRadius | Number(单位:px) | 否 | 圆角,跟css一样 |
| index | Int | 否 | 层级,越大越高 |
| qrCode | Bool | 否 | 是否二维码图片,如果是,url内容就是二维码内容 |### lines字段
| 字段 | 类型 | 必填 | 描述 |
| ------ | ---------------- | ---- | -------------- |
| startX | Number(单位:px) | 是 | 起始坐标 |
| startY | Number(单位:px) | 是 | 起始坐标 |
| endX | Number(单位:px) | 是 | 终结坐标 |
| endY | Number(单位:px) | 是 | 终结坐标 |
| width | Number(单位:px) | 是 | 线的宽度 |
| color | String | 否 | 线的颜色 |
| index | Int | 否 | 层级,越大越高 |## 赞赏
如果你认为我的代码对你有帮助... 好吧我看他们都放,我也跟着放了
![1141628692038_.pic.jpg](https://i.loli.net/2021/08/11/QEX2nZIf3Aa8hdJ.jpg)进群请加微信: qbhy0715
[email protected]
[qbhy/poster-generater](https://github.com/qbhy/poster-generater)