更新记录

1.0.5(2021-04-12)

功能更新
  • 增加注册邀请码
  • 文本大小(即font属性),程序内部自动处理成:小程序(官方)类型为Number,web端(标准类型)为String

1.0.4(2021-03-15)

功能更新
  • 代码结构优化与调整
  • 优化案例(注释与examples)代码,使其更加直观
  • 回调支持:参数callback和实例then方式,且修复上一个版本,then调用会丢失某些异常结果

1.0.3(2021-03-08)

  • 功能更新:路径新增-分割线(实线或者虚线)
查看更多

平台兼容性

Vue2 Vue3
×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 2.8.6 app-vue ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
10+ 10+

canvas-poster-sprite

一个canvas海报合成插件,可以绘制文本,路径和图片到画布,并导出图片数据。

功能简介 | English

注意事项 | 版本更新

  • 文本暂不支持艺术体,艺术体可用图片代替
  • 图片资源支持http|https(web注意跨域问题,小程序需要添加dowanload域名白名单),只有web端支持本地资源(本地service,请用require导入)
  • 海报背景图片加上preload=true字段,以保证第一个被画上
  • 画布的宽高最好设置成海报图的宽和高,这样最终合成的图不会有多余的空白
  • 可通过字段fileType和quality,来控制导出图片质量大小,一般jpeg格式图片质量相对较低
  • uni版本,内部封装的是uni的API,理论上来说,应该是支持app-vue(已验证)、web(未验证)、小程序(未验证)

使用说明

  • install:npm i canvas-poster-sprite or yarn add canvas-poster-sprite
  • web导入:import CanvasPosterSprite from 'canvas-poster-sprite'
  • uni:import CanvasPosterSprite from 'canvas-poster-sprite/dist/uni-canvas-poster-sprite.js'
  • wx:import CanvasPosterSprite from 'canvas-poster-sprite/dist/wx-canvas-poster-sprite.js'
  • my:import CanvasPosterSprite from 'canvas-poster-sprite/dist/my-canvas-poster-sprite.js'
  • tt:import CanvasPosterSprite from 'canvas-poster-sprite/dist/tt-canvas-poster-sprite.js'
  • swan:import CanvasPosterSprite from 'canvas-poster-sprite/dist/swan-canvas-poster-sprite.js'
  • qq:import CanvasPosterSprite from 'canvas-poster-sprite/dist/qq-canvas-poster-sprite.js'
  • 初始化实例:new CanvasPosterSprite(options)

    new CanvasPosterSprite({
    /* uni|wx|my|tt|swan|qq */
    self: this, 
    canvasId: 'canvas-id',
    
    /* web|uni|wx|my|tt|swan|qq */
    width: 900,
    height: 1600,
    bgColor: '#dddddd',
    paths : {
    circle : [
      {x: 214, y: 1123, w: 56, h: 56, r: 28, type: "fill", color: "#ffffff"}
    ],
    rect : [
      {x: 324, y: 1209, w: 252, h: 252, type: "fill", color: "#e6e6e6"},
      {x: 325, y: 1210, w: 250, h: 250, type: "fill", color: "#ffffff"},
      {x: 206, y: 1117, w: 488, h: 68, r: 34, type: "fill", color: "rgba(0, 0, 0, .15)"},
      {x: 376.5, y: 1520.5, w: 152, h: 44, r: 22, lineWidth: 4, color: "#000000"}
    ],
    triangle : [
      {points : [{x: 450, y: 1198}, {x: 462, y: 1185}, {x: 439, y: 1185}], type: "fill", color: "rgba(0, 0, 0, .15)"}
    ],
    line : [
      {x1: 360, y1: 1490.5, x2: 400, y2: 1490.5, lineWidth: 2, color: "#000000"},
      {x1: 505, y1: 1490.5, x2: 545, y2: 1490.5, lineWidth: 2, color: "#000000"}
    ]
    },
    /*pics : [
    {x: 0, y: 0, w: 900, h: 1600, preload: true, src: "./img/bg-zm.jpg"},
    {x: 328, y: 1213, w: 244, h: 244, src: "./img/qrcode-zm.png"},
    {x: 215, y: 1124, w: 54, h: 54, r: 27, src: "./img/icon.jpeg"}
    ],*/
    texts: [
    {x: 280, y: 1152, font: "26px 微软雅黑", color: "#FFE506", text: "小小咖侠侣店"},
    {x: 436, y: 1152, font: "26px 微软雅黑", color: "#ffffff", text: "邀请你注册侠侣联盟"},
    {x: 328, y: 1493, w: 250, font: "24px 微软雅黑", align: "center", color: "#000000", text: "邀 请 码"},
    {x: 328, y: 1543, w: 250, font: "28px Arail", align: "center", color: "#000000", text: "3ZGVTV"}
    ]
    }).then((err, res)=>{
    if(err){
     console.log("canvas-fail:", err);
     return;
    }
    let { tempFilePath, canvas } = res;
    console.log("canvas-success:", res);
    })

参考案例

参数 类型 是否必须 默认值 字段备注
width Number -- 640 画布宽度
height Number -- 640 画布高度
bgColor String -- #fff 画布背景色
fileType String -- jpeg 图片格式(jpeg、png、gif)
quality Number -- 1 导出图片质量
pics Array -- -- 图片资源,参考draw-pic.md
paths Object -- -- 路径,参考draw-path.md
texts Array -- -- 文本,参考draw-text.md
  • uni | wx | my | tt | swan | qq
参数 类型 是否必须 默认值 字段备注
self Object yes -- 当前运行环境 - this
canvasId String yes -- canvas组件实例 - canvas-id
  • uni
参数 类型 是否必须 默认值 字段备注
appPlus Boolean -- false app端,是否先把图片转换成base64,再画图,fix:Android10 真机 uni.canvasToTempFilePath报错
pixelRatio Number -- 2 (app真机)设备分辨率
  • spriter
方法 描述
spriter.then(callback) 回调,返回(err, res)

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问