小程序海报生成神器之一lime-painter配合uniapp简单使用示例

告别截图拼接!用lime-painter插件5分钟搞定uni-app动态海报生成(附完整代码) 本文介绍了如何使用lime-painter插件在uni-app中快速生成动态海报,告别传统截图拼接的低效方式。通过详细的代码示例和实战案例,展示了如何利用canvas技术实现包含动态文本、图片和二维码的个性化分享海报,提升开发效率和用户体验。 阅读详情
AI摘要

本文介绍了一款uniapp上的海报生成插件lime-painter,支持JSON和template两种配置方式,提供了详细的使用教程及示例代码。

组件介绍

lime-painter 是一个运行在uniapp上优雅的海报生成插件,支持JSON方式和template方式生成海报

资源

完整demo: https://gitee.com/hackchen/demo-collection/tree/master/front-end/uniapp/lime-painter-demo

需要注意的问题
  1. 包含图片最好的地址最好要支持跨域

  2. nvue 必须为HBX 3.4.11及以上

使用步骤
  1. 安装lime-painter

从完整demo中的 uni_modules/lime-painter 目录复制到你的uniapp项目的 uni_modules 目录下

  1. 新建页面 pages/index/demo.vue,页面内容如下
<script setup>
import {ref} from 'vue'
import {onLoad} from '@dcloudio/uni-app'

// 海报元素的引用,用于后续操作DOM
const posterRef = ref(null);

// 控制海报是否显示
const posterIsShow = ref(false);

// 存储最终生成的海报图片URL
const pictureImage = ref('');

// 海报的JSON配置,包含CSS样式和视图层次结构
const posterJson = ref({
  css: {
    width: '750rpx',
    paddingBottom: '40rpx',
    background: 'linear-gradient(,#000 0%, #ff5000 100%)'
  },
  views: [ // 这里配置了多个视图元素,包括图片、文本和容器,每个都有自己的CSS样式
    {
      src: 'https://m.360buyimg.com/babel/jfs/t1/196317/32/13733/288158/60f4ea39E6fb378ed/d69205b1a8ed3c97.jpg',
      type: 'image',
      css: {
        background: '#fff',
        objectFit: 'cover',
        marginLeft: '40rpx',
        marginTop: '40rpx',
        width: '84rpx',
        border: '2rpx solid #fff',
        boxSizing: 'border-box',
        height: '84rpx',
        borderRadius: '50%'
      }
    },
    {
      type: 'view',
      css: {
        marginTop: '40rpx',
        paddingLeft: '20rpx',
        display: 'inline-block'
      },
      views: [
        {
          text: '隔壁老王2',
          type: 'text',
          css: {
            display: 'block',
            paddingBottom: '10rpx',
            color: '#fff',
            fontSize: '32rpx',
            fontWeight: 'bold'
          }
        },
        {
          text: '为您挑选了一个好物',
          type: 'text',
          css: {
            color: 'rgba(255,255,255,.7)',
            fontSize: '24rpx'
          }
        }
      ]
    },
    {
      css: {
        marginLeft: '40rpx',
        marginTop: '30rpx',
        padding: '32rpx',
        boxSizing: 'border-box',
        background: '#fff',
        borderRadius: '16rpx',
        width: '670rpx',
        boxShadow: '0 20rpx 58rpx rgba(0,0,0,.15)'
      },
      views: [
        {
          src: 'https://m.360buyimg.com/babel/jfs/t1/196317/32/13733/288158/60f4ea39E6fb378ed/d69205b1a8ed3c97.jpg',
          type: 'image',
          css: {
            objectFit: 'cover',
            objectPosition: '50% 50%',
            width: '606rpx',
            height: '606rpx'
          }
        },
        {
          css: {
            marginTop: '32rpx',
            color: '#FF0000',
            fontWeight: 'bold',
            fontSize: '28rpx',
            lineHeight: '1em'
          },
          views: [
            {
              text: '¥',
              type: 'text',
              css: {
                verticalAlign: 'bottom'
              }
            },
            {
              text: '39',
              type: 'text',
              css: {
                verticalAlign: 'bottom',
                fontSize: '58rpx'
              }
            },
            {
              text: '.39',
              type: 'text',
              css: {
                verticalAlign: 'bottom'
              }
            },
            {
              text: '¥59.99',
              type: 'text',
              css: {
                verticalAlign: 'bottom',
                paddingLeft: '10rpx',
                fontWeight: 'normal',
                textDecoration: 'line-through',
                color: '#999999'
              }
            }
          ],

          type: 'view'
        },
        {
          css: {
            marginTop: '30rpx',
            fontSize: '26rpx',
            color: '#8c5400'
          },
          views: [
            {
              text: '满100减11',
              type: 'text',
              css: {
                color: '#ff6200',
                border: '1rpx solid #ff6200',
                padding: '10rpx 16rpx 4rpx 16rpx',
                fontSize: '24rpx'
              }
            }
          ],

          type: 'view'
        },
        {
          css: {
            marginTop: '10rpx'
          },
          views: [
            {
              text: '360儿童电话手表9X 智能语音问答定位支付手表 4G全网通20米游泳级防水视频通话拍照手表男女孩星空蓝',
              type: 'text',
              css: {
                paddingRight: '32rpx',
                marginTop: '16rpx',
                boxSizing: 'border-box',
                lineClamp: 2,
                color: '#333333',
                lineHeight: '48rpx',
                fontSize: '30rpx',
                width: '478rpx'
              }
            },
            {
              text: 'limeui.qcoon.cn',
              type: 'qrcode',
              css: {
                width: '128rpx',
                height: '128rpx'
              }
            }
          ],
          type: 'view'
        }
      ],
      type: 'view'
    }
  ]
});

/**
 * 绘制海报成功的回调函数
 * @param {string} e 生成的海报图片数据URL
 * @summary 绘制海报成功后,将海报显示出来,并隐藏加载提示。
 */
const painterSsuccess = (e) => {
  console.log('painterSsuccess');
  posterIsShow.value = true;
  pictureImage.value = e;
  uni.hideLoading()
};
const renderPoster = () => {
  posterRef.value.render(posterJson.value);
}
onLoad(() => {
	uni.showLoading({
		title: '正在生成海报',
		icon: 'loading'
	})
  setTimeout(() => {
    // 需要延迟,不然会报错
    renderPoster();
  },1000)
})
</script>

<template>
<!-- 显示图像的元素 -->
  <image :src="pictureImage" v-if="pictureImage" mode="widthFix" style="width: 700rpx"></image>
  <l-painter
      ref="posterRef"
      @success="painterSsuccess"
      isCanvasToTempFilePath
      performance
      path-type="url"
      custom-style="position: fixed; left: 200%"
  >
  </l-painter>
</template>

<style scoped>

</style>
  1. 修改pages.json,内容如下
    {
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages

		{
			"path": "pages/index/demo",
			"style": {
				"navigationBarTitleText": "海报demo"
			}
		},
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "uni-app"
			}
		}
	],
	"globalStyle": {
		"navigationBarTextStyle": "black",
		"navigationBarTitleText": "uni-app",
		"navigationBarBackgroundColor": "#F8F8F8",
		"backgroundColor": "#F8F8F8"
	},
	"uniIdRouter": {}
}

插件市场地址:https://ext.dcloud.net.cn/plugin?id=2389

【uni-app】微信小程序使用lime-painter生成海报 是一个专为 UniApp 设计的插件,用于优雅地生成海报,并支持下载海报图片。它支持在多个平台中使用,并且提供了盒子、文字、图片、二维码等配置选项,允许开发者根据项目需求按照UI设计稿对海报进行高度还原。本文将介绍如何使用插件在 UniApp 中实现海报的生成及下载。技术栈:uni-app、Vue3(3.4.21)、TypeScript(4.9.5)、wot-design-uni(1.2.26)、UnoCSS(0.58.9)、pyh-nv运行环境:微信小程序。 阅读详情

相关推荐

告别原生Canvas!用lime-painter插件5分钟搞定uni-app海报生成与分享

本文介绍了如何利用lime-painter插件在uni-app中快速实现海报生成与分享功能,告别繁琐的原生Canvas开发。通过声明式语法和智能布局系统,开发者可以像编写普通页面一样轻松构建海报,大幅提升开发效率。文章详细解析了lime-painter的核心优势、实战教程以及性能优化技巧,帮助开发者5分钟内完成海报开发。

weixin_30493401的博客 162

uniapp使用lime-painter分享微信小程序卡片

本文使用的方式是json,也可以用view的方式,但是个人觉得没有json来的方便,毕竟要拥抱jsx。可以在DCloud中直接引用到Hbuildx的项目中去,也可以将代码下载下来然后粘贴到项目中去。

小马甲 2062

liangei-lime-painter-master_java_

支持text、image、view、qrcode 等类型绘制 2、样式完全跟写CSS类似,支持绝大多数的样式。 3、text支持超出省略号,指定关键词颜色替换,自动换行,text之间相连。 4、也支持使用原生方式编写

【uni-app小程序画报生成】浅谈lime-painter的使用

一款非常不错的 基于canvas的小程序画报生成工具,可惜因为各种问题,作者不再维护改为自用。这里使用的是 ## 1.9.3.5(2022-06-29)版本

Li_Ning21的博客 3362

基于 uni-app + Halo 2.x API 实现一款现代化的开源博客 _ CMS 系统API开发的多端应用。un

基于 uni-app + Halo 2.x API 实现一款现代化的开源博客 _ CMS 系统API开发的多端应用。uni-halo小程序、uni-halo微信小程序、uni-halo博客小程序、halo小程序、halo博客小程序、halo微信小程序.zip

gd32 spi 发送&中断接收例程

【代码】gd32 spi 发送&中断接收例程。

weixin_43026921的博客 1653

低代码可视化-uniapp海报可视化设计-代码生成

在uni-app中,海报生成器通常是通过集成特定的插件或组件来实现的,这些插件或组件提供了生成海报所需的功能和灵活性。我们采用了lime-painter海报组件。lime-painter是一款canvas海报组件,可以更轻松地生成海报。它支持通过JSON及Template的方式绘制海报,提供了丰富的样式和布局选项。

luck332的专栏 1686

手把手教你搭建三端口DC-DC变换器(含Boost+Buck电路实战)

本文详细介绍了如何从零开始搭建三端口DC-DC变换器,涵盖Boost和Buck电路的硬件设计、元器件选型、电路板布局、焊接技巧、控制系统设计与调试等关键步骤。通过实战案例和优化建议,帮助工程师避开常见陷阱,提升系统效率和稳定性,适用于光伏、储能等电力电子应用场景。

x8y9z0的博客 930

uni-app生成海报并分享

lime-painter是一款canvas海报组件,可以更轻松的生成海报海报画板 - DCloud 插件市场一款canvas海报组件,更优雅的海报生成方案id=2389插件提供 JSON 及 Template 的方式绘制海报。

培根芝士的专栏 3952

ClickHouse集群扩容实战:用clickhouse-copier搞定数据迁移与分片重平衡

本文详细介绍了使用clickhouse-copier工具实现ClickHouse集群从3分片到5分片的平滑扩容实战。通过分片级并行处理、原子性保证等核心机制,该工具能高效完成数据迁移与分片重平衡,同时保持服务连续性。文章涵盖集群拓扑规划、表结构检查、迁移配置、执行监控及迁移后优化等关键步骤,为大数据量场景下的ClickHouse扩容提供完整解决方案。

weixin_29091837的博客 294

DNA pull-down技术避坑指南:从探针设计到质谱验证的完整实验方案

本文提供了一份详尽的DNA pull-down技术实战避坑指南,涵盖从探针设计、生物素标记、磁珠选择与预处理,到结合洗脱优化及下游质谱验证或Western Blot验证的全流程。重点解析了如何通过精细操作降低非特异性结合、提高实验特异性与重复性,并对比了质谱与WB两种验证路径的适用场景,旨在帮助研究者构建稳健可靠的DNA-蛋白质互作研究体系。

weixin_29274337的博客 495

uniapp使用l-painter画板,海报

使用Painter画板,分享海报

m0_37123106的博客 7222

3.嵌入式控制器EC学习,源码框架(60/64端口)(一)

服务函数剖析 上一篇讲到while循环会一直查询十六个标志位是否满足要求,一旦其中某个标志位为1时,程序将会执行相应的服务函数,而执行服务函数是通过函数指针(service_table[ _R1 ])();来实现的。接下来我们分别来看看这十六个服务函数分别包含了哪些内容。 16个函数的函数名如下: const FUNCT_PTR_V_V code service_table[16] = { // Hi-Level Service Service_PCI, // Host 6

qq_30135687的博客 4160

uniapp页面生成海报并保存和分享微信

uniapp页面生成海报并保存和分享微信

m0_60662967的博客 1680

Apollo 9.0 速度非线性规划算法 – piecewise jerk speed nonlinear optimizer Ⅰ

二次规划的速度规划算法(PiecewiseJerkSpeedOptimizer)的存在两个问题: 这里以一张图来说明上面的问题,假设存在一个实际限速区间(或曲率很大需要降速的区间)[S1, S2],PiecewiseJerkSpeedOptimizer的做法是根据动态规划的st曲线(黑色),找到具体的时间区间[T1, T2],然后对区间[T1, T2]内所有的点施加约束或惩罚。但是二次规划平滑后的曲线(黄色)发生了变化,那么限速区间[S1, S2]对应的时间区间[T1, T2]也发生了变化,所以实际应该是对

WaiNgai 333

【现代控制理论期末考点】

现代控制理论期末考点,适用于 SEU Automation

【人工智障 | 计算鸡视觉 | 机器孩】 1445

uni-app生成海报看这一篇就够了!(lime-painter)

uni-app生成海报看这一篇就够了!本项目功能包括`生成带有个人信息的海报`、海报可进行`分享微信好友`、`收藏`和`保存到相册`。

weixin_43259189的博客 990

外向交货单批次赋值的标准姿势:用 BAPI_OUTB_DELIVERY_CHANGE 把 LIPS-CHARG 改得稳、改得干净

摘要: 外向交货单批次赋值涉及严格的业务约束,包括批次管理状态、单据状态、拆分规则等,直接更新表 LIPS 不可取。推荐使用 BAPI_OUTB_DELIVERY_CHANGE 接口,通过标准业务逻辑实现批次修改。关键点包括:区分单批次分配与批次拆分场景,正确设置 ITEM_CONTROL 控制结构,并确保单位/数量数据完整。附可直接执行的ABAP代码示例,实现安全可靠的批次更新流程。 (字数:149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 397

uniapp使用Painter画板

首先介绍下Painter画板,uniapp 海报画板,可根据自身需求配置生成海报(懒得再写,copy官网的) Painter画板官网:http://liangei.gitee.io/limeui-docs/components/painter/ Painter画板在uniapp插件市场的地址:https://ext.dcloud.net.cn/plugin?id=2389 很好用的一个插件。 安装引入插件不多说,直接说一些使用Painter画板遇到的问题和笔记。 这边有个重要的提示,绘画的时候,要先从层级最

空&白的博客 4787

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

微信小程序海报生成神器lime-painter+uniapp简单使用示例

按钮,导入到自己的项目,在uni_modules文件夹存放。3.小程序里面实现海报生成,最终效果扫码预览。下载插件并导入HBuilderX。(本次使用json方式)

jkcxz的博客 726

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

uniapp海报画板

uniapp海报画板 主要可以用于生成海报,生成二维码,一款canvas海报组件,可根据自身需求使用JSON生成海报 首先先引入,先在Dcloud插件市场下载链接 // 非uni_modules引入方式 import lPainter from '@/components/lime-painter/' // uni_modules引入方式 import lPainter from '@/uni_modules/lime-painter/components/lime-painter/' export def

weixin_45781661的博客 701

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

uniapp实现生成海报功能

在一些项目中有些需求会需要分享海报的功能,今天呢就为大家分享一下我在用uniapp开发中使用的一款插件,可以任意的布局。超级好用 文档链接安排上:https://ext.dcloud.net.cn/plugin?id=2389 引入插件 在上面的链接中下载插件然后引入 import lPainter from '@/components/lime-painter/'//存放插件的路径,可能跟我的不一样 export default { components: {lPainter} } 基本用法 b

qingshui_zhuo的博客 6043

uni-app 实战:使用 lime-painter 实现页面内容一键生成海报并下载

uni-app 实战:使用 lime-painter 实现页面内容一键生成海报并下载

weixin_45563734的博客 740

海报画板插件<l-painter>的使用

具体怎么使用请参考官方文档,第一次用,有错误的地方请指正!

a_hua_yj的博客 1660

uniApp小程序 绘制海报生成图片保存到手机相册

绘制海报需要引用一个组件***lime-painter*** lime-painter组件下载以及使用方法 https://gitee.com/liangei/lime-painter#props <view class="codeBottom" @click="codeSaveImage"> 保存到相册 </view> <l-painter v-if="poster" :board="poster" isCanvasToTempFilePath @success="

c_xiyi的博客 1555
上一篇: 小程序海报生成神器之一Painter
下一篇: uniapp中使用wx.reportEvent上报简单示例
hackchen
博客等级 码龄19年 193粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值