L-Painter 是一款专为 UniApp 开发的轻量级插件,基于开源项目 Painter 改造而来,核心功能是通过 JSON 配置或模板语法 动态生成海报、二维码及自定义图片,支持多端运行(微信小程序、H5、App 等)。其设计初衷是简化开发者在跨平台应用中生成复杂图片的流程,尤其适用于社交分享、活动海报、电子凭证等场景。
-
多平台兼容性支持微信小程序、H5、App 等主流平台,开箱即用,无需额外配置。
-
JSON 配置与模板语法双模式
- JSON 配置:通过定义结构化的 JSON 对象描述图片内容(如文本、图片、二维码、布局容器),支持动态数据填充。
- 模板语法:使用类似 HTML 的标签(如
<l-painter-view>、<l-painter-text>)直接编写布局,支持 CSS 样式控制。
-
动态编辑与事件响应
- 支持通过
action 字段动态刷新模板内容,实现交互效果(如实时修改文本、图片)。
- 提供丰富的事件回调(如
@success、@imgErr),可监听图片生成状态、用户点击行为等。
-
性能优化
- 内置 LRU 缓存机制,避免重复渲染相同内容,提升生成效率。
- 支持
scaleRatio 参数统一缩放画布,适配不同设备分辨率。
-
多类型组件支持
- 基础组件:文本(
text)、图片(image)、二维码(qrcode)、布局容器(view)。
- 高级功能:渐变背景、阴影效果、图片填充模式(
object-fit)等。
-
安装方式
- 插件市场导入:在 HBuilderX 中通过 DCloud 插件市场 搜索 “L-Painter”,直接导入项目。
- 手动下载:从 GitHub 或 Gitee 获取源码,将
uni_modules 目录复制到项目根目录。
-
组件引入
在页面的 Vue 组件中注册 L-Painter:

以下代码生成一个包含文本、图片和二维码的简单海报:
-
动态模板与交互通过 action 字段动态更新内容:

复杂布局与样式
- 渐变背景:使用
linear-gradient 语法(需在 css 中设置):

图片填充模式:通过 object-fit 控制图片显示方式(contain、cover、fill):

-
多端适配与性能优化
- 单位选择:使用
rpx(响应式像素)替代 px,适配不同屏幕尺寸。
- 图片优化:优先使用本地图片或 base64 编码,减少网络请求。
- 缓存机制:启用
LRU: true 缓存已生成的图片,避免重复渲染。

-
图片模糊问题
- 原因:未设置
scaleRatio 或画布尺寸过小。
- 解决:根据设备像素比设置
scaleRatio: 2 或调整画布尺寸。
-
CSS 样式不生效
- 原因:部分 CSS 属性(如
filter、box-shadow)在 canvas 中支持有限。
- 解决:参考官方文档中的 支持样式列表,或通过
customActionStyle 自定义组件样式。
-
多端兼容差异
- 原因:不同平台对 canvas 的渲染机制略有不同。
- 解决:使用
platform 字段针对特定平台单独配置:


L-Painter 是 UniApp 生态中生成图片的高效工具,通过 JSON 配置和模板语法实现了跨平台的灵活性与开发效率。其动态编辑、事件响应和性能优化特性,使其在社交分享、电商促销等场景中表现出色。开发者可结合官方文档与社区案例,快速上手并定制复杂的图片生成需求。