更新记录

1.0.0(2025-04-10)

初次版本


平台兼容性

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

插件名:zmt-avatar-cropper

主要完美支持PC浏览器端,APP和小程序没有测试,如需要请自行测试。 本人搜了很久,没找到一款真正适合PC浏览器端的图片裁剪插件,头疼了很久,一生气索性写一个吧,本人亲自测试编写的,自己用的没有任何问题,直接返回上传到云存储后的网上路径和本地临时路径(非常完美和神奇)。

使用方法:

直接导入到你的项目中,目录:uni_modules,无需引入,直接使用就行。代码如下:

<zmt-avatar-cropper @close="updateShowCrop" @confirm="uploadSuccess" :isShow="showCrop" :imageSrc="imageSrc"></zmt-avatar-cropper>

属性说明如下:

属性名 必填 默认值 说明
imageSrc null 图片临时路径名,详情请看下方实例代码和说明
isShow false 是否显示裁剪弹窗
cropMinSize 200 选取框的最小尺寸,单位为px
cropMaxSize 450 选取框最大尺寸,单位px
cropDefaultSize 400 选取框的默认尺寸

imageSrc路径说明

此路径为通过uniapp选取后的临时路径地址,选取代码如下:

//编辑头像
editAvatar(){
    var that = this;
    uni.chooseImage({
        count: 1, 
        sizeType: ['original'], //可以指定是原图还是压缩图,默认二者都有
        sourceType: ['album'], //从相册选择
        success: function (res) {
            that.showCrop=true;
            that.imageSrc = res.tempFilePaths[0]; //此路径就是要传给插件的路径
        }
    });
},

事件说明如下:

事件名 必填 返回值 说明
@confirm function 点击裁剪插件里的确定按钮以后触发,请看下方说明
@close function 点击了裁剪插件里的关闭按钮以后触发

@confirm事件详细说明

此事件会返回以下参数数据:

参数名 示例值 说明
fileID https://mp-2298d5e4-aa54-4efc-a8b7-bbb75295a007.cdn.bspapp.com/cloudstorage/4e481dd4-a140-4e1e-b2dc-aee10fb7ad0c.png 裁剪上传完以后的完整远程图片路径,可以直接保存到数据库使用
filePath blob:http://localhost:5173/d9e3f027-e982-4dac-a7ce-bd10cb1b6e06 裁剪后的临时图片路径,如果采用第三方上传接口可以用此值直传
success true 一般为true,代表成功

confirm事件示例代码

//裁剪并上传图片以后

uploadSuccess(e){
    console.log('返回参数',e);
    var that = this;
    var avatar = e.fileID;
    if(this.userinfo && this.userinfo._id){
        //修改头像
        db.collection('uni-id-users').where({_id:this.userinfo._id}).update({avatar:avatar}).then(res=>{
        this.userinfo.avatar = avatar;
        uni.setStorage({
            key:'login-****',
            data:that.userinfo
        })
    });
    }

}

@close事件详细说明

此事件主要是用来更新父组件的关闭状态值showCrop,否则会导致第二次无法弹出的情况。

//子组件传过来的更新父组件的状态
updateShowCrop(e){
    this.showCrop = e;
}

特殊说明:

uniapp与uniCloud是完美组合,最好开通uniapp自己的云服务空间,可以直接将文件上传到云存储和到云数据库。到此结束,辛苦编写,还请支持。

隐私、权限声明

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

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

插件不采集任何数据

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

暂无用户评论。

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