更新记录

1.0.0(2024-06-22)

功能实装


平台兼容性

Vue2 Vue3
×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.1.0 × 内核3.4.0 × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × ×

请注意,此插件只完美兼容wx小程序,其他端可能会有点问题,比如h5无法获取地址,app端还没测试过

请注意,目前只支持vue3版本

使用例子

<template>
    <view class="content">
        <CanvasToImg ref="canvasToImg_ele" :parameter="canvasToImg_parameter"></CanvasToImg>
        <button @click="change_and_save_img" style="position: absolute;left: 50%;transform: translateX(-50%);bottom: 10%;">点击保存图片</button>
    </view>
</template>

<script setup>
    import CanvasToImg from '@/uni_modules/canvas-to-img/components/canvas-to-img/canvas-to-img.vue'
    import {ref} from 'vue'

    const canvasToImg_ele=ref()

    const canvasToImg_parameter=ref({}) //不要在此直接赋值

    //点击事件
    const change_and_save_img=async()=>{
        //画图
        canvasToImg_parameter.value={
            root:{
                width:300,
                height:300,
                children:[
                    {
                        width:200,
                        height: 200,
                        left: 0,
                        top: 0,
                        bgimg: '/static/logo.png',
                        children: [{
                            fontsize: 15,
                            color: 'black',
                            text: "你好",
                            left: 10,
                            top: 8
                        }]
                    },
                ]
            }
        }

        //将canvas转为图片
        let result=await canvasToImg_ele.value.save_img()
        await uni.showToast({
            icon:'none',
            title:"图片地址:"+result,
        })
        console.log(result)
    }

</script>

方法

方法 说明
save_img() 保存文件

参数

参数 说明
parameter json格式的树形结构

参数说明

1.根节点root的width和height为最后生成图片的大小,其子元素多于此尺寸部分都不会被渲染

2.子元素目前仅有有三种类型:方形纯色填充,图片(本地或远程),文字,它们都要在根节点之下,格式分别为:

//方形纯色填充
 root:{
       width:300,
       height:300,
         children:[
            {
               width:200,  //长
               height: 200, //宽
               left: 0,    //左偏移
               top: 0,    //上偏移
                bgcolor: 'red', //颜色(可以填16进制颜色代码例如#fff)
             },
                ]
            }
//图片
 root:{
       width:300,
       height:300,
         children:[
            {
               width:200,  //长
               height: 200, //宽
               left: 0,    //左偏移
               top: 0,    //上偏移
                bgimg: '/static/logo.png', //图片链接(可以本地也可以远程链接如(https://www.xxxx.xx/xxx.png))
             },
                ]
            }
//文字
 root:{
       width:300,
       height:300,
         children:[
            {
               fontsize:10,//文字大小
               left: 0,    //左偏移
               top: 0,    //上偏移(文字顶端离画布顶部的距离)
                text: '666', //文字
             },
                ]
            }

3.在children中嵌套和同级的关系

//嵌套和同级示例
 root:{
       width:300,
       height:300,
         children:[
            {
               width:200,  
               height: 200,
               left: 0,  
               top: 0,  
                bgimg: 'https://www.xxxx.xx/xxx.png',
                children:[
                     //嵌套
                     { 
                       fontsize:10,//文字大小
                       left: 0,    //左偏移
                       top: 0,    //上偏移(文字顶端离画布顶部的距离)
                        text: '666', //文字
                     },
                ]
             },
             //同级
             { 
               fontsize:10,//文字大小
               left: 0,    //左偏移
               top: 0,    //上偏移(文字顶端离画布顶部的距离)
                text: '666', //文字
             },
           ]
            }

嵌套主要的应用场景是在一些需要等待异步加载完成后再进行下一步的场景,例如我想绘制一张网络图片后再在此图片之上绘制文字,而不是因为异步的原因导致文字被图片覆盖掉

隐私、权限声明

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

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

插件不采集任何数据

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

许可协议

MIT协议

暂无用户评论。

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