更新记录
1.0.0(2026-06-11) 下载此版本
- 首次发布海报画板组件。
- 支持图片、文字、多行省略、标签、线条、头像、二维码图片位绘制。
- 内置商品海报和邀请海报模板,支持渲染后导出图片。
平台兼容性
uni-app(3.97)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | × | 5.0 | √ | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | × | × | √ | √ | √ | × | × |
JQ-PosterBoard JQ海报画板生成器
JQ-PosterBoard 是一个 uni-app 海报画板组件,适合商品分享图、活动邀请图、课程海报、分销海报、门店二维码海报等场景。插件不申请系统权限,不包含网络请求,也不内置广告 SDK。
特点
- 使用配置对象绘制海报,便于后端下发模板或前端维护模板。
- 支持矩形、圆角矩形、线条、文本、多行省略、标签、图片、头像、二维码图片位。
- 内置商品海报、邀请海报模板工具,导入后可直接改字段使用。
- 支持
render()、exportImage()、renderAndExport()方法,方便生成后保存或分享。 - 符合 uni_modules / easycom 组件规范,导入后可直接使用
<jq-poster-board />。
快速使用
<template>
<view>
<jq-poster-board ref="posterBoard" :poster="poster" :hidden="false" />
<button @click="makePoster">生成海报</button>
</view>
</template>
<script>
import { createProductPoster } from '@/uni_modules/JQ-PosterBoard/js_sdk/jq-poster-board/templates.js'
export default {
data() {
return {
poster: createProductPoster({
title: '618 活动商品海报',
price: '59.90',
originalPrice: '99.00',
badge: '新人专享',
shopName: '我的小店'
})
}
},
methods: {
makePoster() {
this.$refs.posterBoard.renderAndExport(this.poster).then((res) => {
console.log('海报图片路径', res.tempFilePath)
})
}
}
}
</script>
组件属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
poster |
Object | {} |
海报配置对象 |
canvasId |
String | jqPosterBoardCanvas |
canvas ID,同一页面多个组件时需保证唯一 |
autoRender |
Boolean | true |
poster 变化后是否自动重绘 |
hidden |
Boolean | false |
是否将画布移到屏幕外,用于只导出不展示 |
exportType |
String | png |
导出类型,可传 png 或 jpg |
quality |
Number | 1 |
导出质量,常用于 jpg |
方法
| 方法 | 说明 |
|---|---|
render(poster) |
绘制海报,返回 Promise |
exportImage(options) |
将当前画布导出为临时图片路径 |
renderAndExport(poster, options) |
先绘制再导出 |
exportImage 支持 pixelRatio、fileType、quality 参数。推荐移动端分享图使用 pixelRatio: 2。
poster 配置
{
width: 750,
height: 1100,
background: '#ffffff',
pixelRatio: 2,
elements: [
{ type: 'rect', x: 36, y: 36, width: 678, height: 1028, radius: 28, color: '#ffffff' },
{ type: 'image', x: 66, y: 66, width: 618, height: 430, radius: 22, src: '/static/demo.png' },
{ type: 'tag', x: 66, y: 528, text: '限时优惠', background: '#fff1f2', color: '#be123c' },
{ type: 'text', x: 66, y: 610, width: 560, maxLines: 2, text: '海报标题', fontSize: 42 },
{ type: 'line', x1: 66, y1: 930, x2: 684, y2: 930, width: 1, color: '#e5e7eb' },
{ type: 'qrcode', x: 554, y: 958, width: 108, height: 108, src: '/static/qrcode.png' }
]
}
元素类型
rect
绘制矩形或圆角矩形。
| 字段 | 说明 |
|---|---|
x / y |
左上角坐标 |
width / height |
宽高 |
radius |
圆角 |
color |
填充颜色 |
borderColor / borderWidth |
边框颜色和宽度 |
text
绘制单行或多行文本。
| 字段 | 说明 |
|---|---|
text |
文本内容 |
x / y |
文本坐标 |
width |
最大宽度,超过后自动换行 |
fontSize |
字号 |
lineHeight |
行高 |
maxLines |
最大行数,超出后省略 |
color |
文本颜色 |
align |
对齐方式,支持 left、center、right |
image / avatar / qrcode
绘制图片。avatar 会默认裁成圆形,qrcode 用于二维码图片位。插件不负责生成二维码内容,建议传入已有二维码图片路径或网络图片地址。
| 字段 | 说明 |
|---|---|
src |
图片路径,支持本地临时路径和可被平台加载的网络图片 |
x / y |
左上角坐标 |
width / height |
宽高 |
radius |
圆角 |
fallbackText |
图片为空或加载失败时显示的占位文字 |
tag
绘制胶囊标签。
| 字段 | 说明 |
|---|---|
text |
标签文字 |
x / y |
左上角坐标 |
background |
背景色 |
color |
文本颜色 |
paddingX / paddingY |
内边距 |
事件
| 事件 | 说明 |
|---|---|
render-start |
开始绘制 |
render-success |
绘制完成 |
render-error |
绘制失败 |
export-success |
导出成功 |
export-error |
导出失败 |
常见问题
为什么二维码不是插件内部生成?
真实业务里二维码通常来自后端、微信小程序码、活动短链或平台接口。插件提供二维码图片位,避免在前端重复实现各平台差异较大的码生成流程。
网络图片不显示怎么办?
确认图片地址支持当前平台访问,并且小程序端已配置合法域名。跨域或防盗链图片建议先下载为本地临时路径再绘制。
导出图片失败怎么办?
确认 canvas 已经渲染完成后再调用 exportImage()。如果同页存在多个海报组件,需要给每个组件设置唯一 canvasId。
平台说明
本插件是纯前端 canvas 组件,不涉及 Android/iOS 原生权限。不同平台的 canvas 行为可能存在差异,建议接入方在目标平台上做一次生成和导出测试。当前版本不支持 nvue。
隐私与权限
- 不申请系统权限。
- 不采集用户数据。
- 不包含网络请求、上传、统计或云端存储能力。
- 不内置广告 SDK;市场侧可配置免费广告解锁下载,仅为 DCloud 市场下载侧能力。

收藏人数:
下载插件并导入HBuilderX
下载示例项目ZIP
赞赏(0)
下载 117
赞赏 0
下载 12223375
赞赏 1918
赞赏
京公网安备:11010802035340号