# goposter **Repository Path**: weixuhui/goposter ## Basic Information - **Project Name**: goposter - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-12-08 - **Last Updated**: 2021-12-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Go 实现的海报合成 - 为了解决php使用gd或imagick库时,依赖不完善,导致无法使用的场景, - 现使用go语言实现一套自定义海报内容,实现图像合成的方案 ### 使用说明 ###### 安装/下载 ``` git clone https://gitee.com/weixuhui/goposter.git ``` ###### 运行/打包 ```go go run / go build ``` ###### 部署 - 可将打包之后的可执行文件,上传至服务器项目根目录,然后运行脚本 ```go ./poster --data='{"Width":1000,"Height":1000,"backgroudColor":"#fff","backgroudImage":"http://img.aiimg.com/uploads/allimg/180707/1-1PFG64119.jpg","images":[{"positionX":200,"positionY":200,"imageWidth":40,"imageHeight":40,"imageUrl":"http://n.sinaimg.cn/sinacn16/580/w690h690/20180414/0939-fzcyxmu4864171.jpg","circleClip":true},{"positionX":500,"positionY":500,"imageWidth":100,"imageHeight":200,"imageUrl":"http://n.sinaimg.cn/sinacn16/580/w690h690/20180414/0939-fzcyxmu4864171.jpg","circleClip":true}],"words":[{"positionX":300,"positionY":300,"text":"测试文本内容","textWidth":60,"lineHeight":1.2,"fontSize":60,"fontColor":"#ff0000","textAlign":"center","fontFamily":"pingfang.ttf"}],"lines":[{"startX":100,"startY":100,"endX":200,"endY":200,"width":20,"color":"#00ff00"}],"SavePath":"./posters","SaveName":"test1.png"}' --delete=true ``` ### 参数说明 - data | d ```json { "Width": 600, // 画布宽度 "Height": 400, // 画布高度 "backgroudColor": "#fff", // 背景颜色 "backgroudImage": "http://img.aiimg.com/uploads/allimg/180707/1-1PFG64119.jpg", // 背景图片 "images": [ // 需要插入的图片 { "positionX": 200, // 图片插入位置 X "positionY": 200, // 图片插入位置 Y "imageWidth": 40, // 图片大小 "imageHeight": 40, // 图片大小 "imageUrl": "http://n.sinaimg.cn/sinacn16/580/w690h690/20180414/0939-fzcyxmu4864171.jpg", // 图片地址 "circleClip": true // 是否裁剪成圆角 } ], "words": [ // 需要插入的文字 { "positionX": 300, // 文字插入位置 X "positionY": 300, // 文字插入位置 Y "text": "测试文本内容", // 文字内容 "textWidth": 60, // 文字宽度 "lineHeight": 40, // 行高 "fontSize": 12, // 字体大小 "fontColor": "#ff0000", // 颜色 "textAlign": "center", // 对其方式 } ], "lines": [ // 需要插入的文字 { "startX": 100, // 开始位置 X "startY": 100, // 开始位置 Y "endX": 200, // 结束位置 X "endY": 200, // 结束位置 Y "width": 20, // 线宽 "color": "#00ff00" // 线颜色 } ], "SavePath": "/tmp/virchow_poster/test", // 保存地址 "SaveName": "test.png" // 保存文件名 } ``` ### 待完善内容 ~~1. 下载的网络资源,可根据 `--delete` 参数判断是否进行删除~~ 2. 生成海报的存储路径,需要再优化,目前是在 `SavePath` 下生成两个目录, `downloads` 和 `results`, 分别存放下载的网络资源和最终生成的海报 3. 文字自定义字体尚未实现 ~~4. 图片的 `circleClip` 尚未实现~~ 5. 划线最好允许设置划线形状,但是不同的线参数不一致,实际中也没有多大必要,后期再考虑 6. 生成海报支持自动上传第三方存储,如阿里云OSS等