微信小程序:一个json生成海报

328 阅读2分钟

json2poster

介绍

微信小程序生成canvas海报

借鉴(抄袭)willnewii,增加了一点,优化了一点

Github地址

Gitee地址

安装教程

// Gitee
git clone git@gitee.com:jiangjingmin/json2poster.git

// Github
git clone git@github.com:jiangjingmin/json2poster.git

使用说明

  • 支持缩放 如果设计稿是750,而画布只有375时.你不需要任何换算,只需要将scale设置为0.5
  • 支持分组(cax里很好用的一个功能)
  • 图片支持圆角
  • 支持圆型,矩形,矩形圆角(背景色支持线性渐变)
  • 文本支持竖排,长文本自动换行
  • 支持动态文本

配置项

Canvas(画布)

属性 类型 默认值 必填 说明
width Number 画布宽度,一般设计稿为750
height Number 画布高度
x Number 0 相对于画布左侧的距离
y Number 0 相对于画布顶部的距离
scale Number 1 是否缩放画布

......

Group(组)

属性 类型 默认值 必填 说明
type String group 绘制类型
width Number 宽度
height Number 高度
x Number 0 相对于父元素左侧的距离
y Number 0 相对于父元素顶部的距离

......

Text(文本)

属性 类型 默认值 / 示例 必填 说明
type String text 绘制类型
height Number 如果文本为动态内容可设置为'auto'
uiheight Number 如果是动态内容,可设置文本区域最大高度
x Number 0 相对于父元素左侧的距离
y Number 0 相对于父元素顶部的距离

......

Image(图片)

属性 类型 默认值 / 示例 必填 说明
type String image 绘制类型
width Number 宽度
height Number 高度
x Number 0 相对于父元素左侧的距离
y Number 0 相对于父元素顶部的距离

......

Circle(圆)

属性 类型 默认值 / 示例 必填 说明
type String circle 绘制类型
width Number 宽度
height Number 高度
x Number 0 相对于父元素左侧的距离
y Number 0 相对于父元素顶部的距离
r Number 20 半径

......

Rect(矩形)

属性 类型 默认值 / 示例 必填 说明
type String rect 绘制类型
width Number 宽度
height Number 高度
x Number 0 相对于父元素左侧的距离
y Number 0 相对于父元素顶部的距离
r Number 20 半径

......

示例:

var posterConfig = {
    "width": 750,
    "height": 1370,
    "scale": 1,
    "fillStyle": "#FFFFFF",
    "children": [
        {
            "type": "group",
            "width": 600,
            "height": 460,
            "x": 0,
            "y": 0,
            "children": [
               {
                    "type": "text",
                    "text": "内容",
                    "maxWidth": 580,
                    "lineHeight": 40,
                    "textAlign": "right",
                    "font": "30px Arial",
                    "color": "#333333",
                    "height": "auto",
                    "uiheight": 200,
                    "x": 30,
                    "y": 30
                },
                {
                    "type": "image",
                    "width": 100,
                    "height": 200,
                    "x": 30,
                    "y": 260,
                    "url": "/images/default-person.png",
                    "isCircular": true,
                    "fixHeight": true,
                    "r": 10,
                } 
            ]
        }
    ]