更新记录

1.0.1(2025-01-11) 下载此版本

删除组件中的console.log

1.0.0(2025-01-11) 下载此版本


平台兼容性

Vue2 Vue3
× ×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 4.25 app-uvue × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序 鸿蒙元服务
× × × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

uts海报组件(ios/Android 支持字体样式、渐变背景)

参数

width number
height number
elements BaseElement[] 渲染画布的数据
background-color string 背景色
background-gradient GradientType/null 渐变背景色

BaseElement

type string 类型
x number x轴
y number y轴
width number
height number
content string/null 内容
src string/null 图片路径
fontSize number/null 字体样式
color string/null 字体样式
textAlign string/null 字体样式
fontWeight string/null 字体样式
fontFamily string/null 字体样式
lineHeight number/null 字体样式
maxLines number/null 字体行数
borderRadius number/null 圆角
backgroundColor string/null 背景色
background-gradient GradientType/null 渐变背景色

GradientType

type string 类型
colors string[] 渐变颜色数组
positions number[] 渐变位置数组
angle number/null 线性渐变的角度,默认为0(从左到右)

示例

<template>
    <view class="container">
        <ZlPosters ref="PosterPainterRef" :width="canvasWidth" :height="canvasHeight" :elements="posterElements"
            :background-color="backgroundColor" :backgroundGradient="backgroundGradient" @onSuccess="handleSuccess"
            @onError="handleError">
        </ZlPosters>
        <view style="background-color: red;">
        </view>

        <button class="generate-btn" @click="onGenerateClick">{{ buttonText }}</button>
    </view>
</template>

<script lang="uts">
    import ZlPosters from '@/components/zl-posters/zl-posters'
    import { BaseElement } from "@/components/zl-posters/types.uts"
    export default {
        components: {
            ZlPosters,
        },
        data() {
            return {
                buttonText: '点击生成海报',
                canvasWidth: 310 as number,
                canvasHeight: 490 as number,
                backgroundColor: '#DCDCDC' as string,//背景色
                backgroundGradient: {
                    type: 'linear',
                    colors: ['#d4fc79', '#84fab0', '#8fd3f4'],  // 
                    positions: [0, 0.5, 1],  // 中间色在50%
                    angle: 45
                },//渐变的背景色
                posterElements: [
                    {
                        type: 'image', //类型
                        src: "/static/test2.jpg", //图片路径
                        x: 20, //x轴
                        y: 20,//y轴
                        width: 270,//宽
                        height: 380,//高
                        borderRadius: 14//圆角
                    },
                    // 添加一个普通的蓝色矩形区域
                    {
                        type: 'rect',
                        x: 20,
                        y: 380,
                        width: 60,
                        height: 60,
                        borderRadius: 30,
                        // backgroundColor: '#0000ff', //矩形颜色
                        gradient: {
                            type: 'radial',
                            colors: ['#ffffff', '#000000'],  // 从白色渐变到黑色
                            positions: [0, 1],
                            angle: 0  // 径向渐变不需要角度
                        }, //矩形渐变颜色
                    },
                    {
                        type: 'image',
                        src: '/static/test1.jpg',
                        x: 30,
                        y: 390,
                        width: 40,
                        height: 40,
                        borderRadius: 20
                    },
                    {
                        type: 'text',
                        content: '嘿嘿',
                        x: 100,
                        y: 418,
                        width: 215,
                        height: 18,
                        fontSize: 12,
                        textAlign: "left",
                        fontFamily: 'ts',
                        color: '#666'
                    },
                    {
                        type: 'text',
                        content: '这是一段很长的文字,需要自动换行显示。这是一段很长的文字,需要自动换行显示。这是一段很长的文字,需要自动换行显示。需要自动换行显示。这是一段很长的文字,需要自动换行显示。需要自动换行显示。这是一段很长的文字,需要自动换行显示。',
                        x: 20,
                        y: 450,
                        width: 270,
                        height: 42,
                        fontSize: 8,
                        lineHeight: 14,  // 设置行高
                        maxLines: 3,     // 最多显示3行
                        color: '#666',
                        textAlign: 'left'
                    },

                ] as Array<BaseElement>
            }
        },
        methods: {
            onGenerateClick() : void {
                (this.$refs['PosterPainterRef'] as ZlPostersComponentPublicInstance).generatePoster()
            },
            handleSuccess(base64 : string) : void {
                console.log('海报生成成功:', base64);

            },
            handleError(error : string) : void {
                console.error('海报生成失败:');
            }
        }
    }
</script>

隐私、权限声明

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

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

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

许可协议

MIT协议

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