合成海报的小程序插件-票圈海报

 


概述

票圈海报 是一个用于生成海报的小程序插件,通过灵活简单的配置(JSON)就可以生成精美的分享海报,适用于小程序的朋友圈分享等营销裂变场景。

可以绘制文字、图片、线条、色块到海报画布,支持设置宽高、透明度、层级甚至圆角等属性。

亮点

  1. 已上架到微信服务平台,一键接入,即插即用
  2. 提供异步调用方法,支持获取用户头像后合成海报的场景
  3. 无需设置图片downloadFile合法域名,再也不用担心 “downloadFile: fail url not in domain list” 问题
  4. 自带保存海报UI(开关参数:config.showSavePopup)

生成效果

wxa-plugin-canvas预览截图

快速预览

点击 导入代码片段 即可在微信开发者工具中运行和预览。需注意,由于引用插件,需要先申请接入权限,快速预览可填写 AppID: wx8a6f7c4b3d410554,确认适合自己后再发起插件接入申请。

小技巧:首次导入代码段,会在小程序开发者工具的 console 中看到 “插件未授权使用”的提示,只要点击右边“添加插件”按钮即可申请添加,秒通过。

接入指引

1、插件申请接入:

在微信公众平台中, “微信小程序官方后台-设置-第三方服务-插件管理” 里点击 “添加插件”,搜索 “票圈海报” ,申请通过后,小程序开发者可在小程序内使用该插件。

2、引入插件包:

 

// app.json { "plugins": { "poster": { "version": "1.0.7", "provider": "wx8a6f7c4b3d410554" } } }

3、使用插件:

小程序插件通过组件的 bind:success、bind:fail 属性 对外暴露回调方法,通过 config 属性接收插件配置对象。

 

<poster id="poster" config="{{posterConfig}}" bind:success="onPosterSuccess" bind:fail="onPosterFail"> <button>点击生成海报</button> </poster>

除此之外,可以通过 onCreate API,异步调用海报合成方法,详见文末 异步生成海报 部分

 

this.selectComponent('#poster').onCreate(true)

使用注意事项

  1. 图片的域名务必添加到downloadFile合法域名中(开发设置-服务器域名-downloadFile合法域名) 「插件已处理跨域问题」,warming信息可忽略。

组件参数解释

config字段

字段类型必填描述
showSavePopupBoolean是否展示保存海报弹窗,默认 false
widthNumber(单位:rpx)画布宽度
heightNumber(单位:rpx)画布高度
backgroundColorString画布颜色
debugBooleanfalse隐藏canvas,true显示canvas,默认false
pixelRatioNumber1为一般,值越大越清晰
preloadBooleantrue:图片资源预下载 默认false
hide-loadingBooleantrue:隐藏loading 默认false
blocksObject Array(对象数组)看下文
textsObject Array(对象数组)看下文
imagesObject Array(对象数组)看下文
linesObject Array(对象数组)看下文

blocks字段

字段名类型必填描述
xNumber(单位:rpx)块的坐标
yNumber(单位:rpx)块的坐标
widthNumber(单位:rpx)如果内部有文字,由文字宽度和内边距决定
heightNumber(单位:rpx) 
paddingLeftNumber(单位:rpx)内左边距
paddingRightNumber(单位:rpx)内右边距
borderWidthNumber(单位:rpx)边框宽度
borderColorString边框颜色
backgroundColorString背景颜色
borderRadiusNumber(单位:rpx)圆角
textObject块里面可以填充文字,参考texts字段解释
zIndexInt层级,越大越高

texts字段

字段名类型必填描述
xNumber(单位:rpx)坐标
yNumber(单位:rpx)坐标
textString|Object当Object类型时,参数为text字段的参数,marginLeft、marginRight这两个字段可用(示例请看下文)
fontSizeNumber(单位:rpx)文字大小
colorString颜色
opacityInt1为不透明,0为透明
lineHeightNumber(单位:rpx)行高
lineNumInt根据宽度换行,最多的行数
widthNumber(单位:rpx)没有指定为画布宽度
marginLeftNumber(单位:rpx)当text字段为Object可以使用,用来控制多行文字间距
marginRightNumber(单位:rpx)当text字段为Object可以使用,用来控制多行文字间距
textDecorationString目前只支持 line-through(贯穿线),默认为none
baseLineStringtop| middle|bottom基线对齐方式
textAlignStringleft|center|right对齐方式
zIndexInt层级,越大越高
fontFamilyString小程序默认字体为'sans-serif', 请输入小程序支持的字体,例如:'STSong'
fontWeightString'bold'加粗字体,目前小程序不支持 100 - 900 加粗
fontStyleString'italic'倾斜字体

images字段

字段类型必填描述
xNumber(单位:rpx)右上角的坐标
yNumber(单位:rpx)右上角的坐标
urlString图片url(需要添加到下载白名单域名中)也支持本地图片
widthNumber(单位:rpx)宽度(会根据图片的尺寸同比例缩放
heightNumber(单位:rpx)高度(会根据图片的尺寸同比例缩放
borderRadiusNumber(单位:rpx)圆角,跟css一样
borderWidthNumber(单位:rpx)边框宽度
borderColorString边框颜色
zIndexInt层级,越大越高

lines字段

字段类型必填描述
startXNumber(单位:rpx)起始坐标
startYNumber(单位:rpx)起始坐标
endXNumber(单位:rpx)终结坐标
endYNumber(单位:rpx)终结坐标
widthNumber(单位:rpx)线的宽度
colorString线的颜色
zIndexInt层级,越大越高

事件绑定

以代码段为例

 

<poster id="poster" config="{{posterConfig}}" bind:success="onPosterSuccess" hide-loading="{{false}}" bind:fail="onPosterFail" bind:savePopShowChange="popChange"> <button style="margin:40rpx;">点击生成海报(缓存|同步)</button> </poster>

成功回调 success

返回 { detail }, detail 为生成海报图片的本地 url,可以使用wx.previewImage预览海报,如下

 

onPosterSuccess(e) { const { detail } = e; wx.previewImage({ current: detail, urls: [detail] }) }

失败回调 fail

返回{ detail }, detail 为错误信息

保存弹层显隐切换回调 savePopShowChange

如果选项设置了 showSavePopup 为 true,会在合成海报后,弹出保存海报的指引弹层。绑定 savePopShowChange 事件,可监听弹层显隐状态:

 

onPosterSuccess(e) { const { detail } = e; console.log(detail) // true or false }

异步生成海报

从基础库版本 2.2.3 开始提供支持

有些场景可能需要发起 ajax 请求后才能获取生成海报的数据,这里提供了异步生成海报的方式。

只需要对组件的 onCreate 方法,如下调用就行了

 

Page({ /** * 异步生成海报 */ asyncCreatePoster() { // setData配置数据 this.setData({ posterConfig: {...} }, () => { this.selectComponent('#poster').onCreate(true) }); } })

问题反馈

有什么问题可以邮件 gt@Kainy.cn 。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值