微信小程序(vue3) - 详细实现图片压缩上传服务器示例代码,wx.chooseMedia手机拍照或相册选取后将图片进行压缩处理,手机摄像头拍照后图像太大需要先降低图像大小后再上传(不牺牲画质减小)

效果图

在微信小程序(vue3)项目开发中,详解实现小程序图片压缩并上传到服务器功能,使用wx.chooseMedia将手机拍照或相册选中的图片(正常手机照相的相片非常大好几兆),上传前先进行图像压缩减少大小,压缩完毕后再上传后端,指定要压缩到多大,在不牺牲图片质量的前提下尽可能压缩,支持自定义修改压缩后的大小KB、指定超过N多少兆后才执行压缩、图像质量,提供源码。

提供详细示例代码,新手小白复制稍微改改就能用了。

在这里插入图片描述

完整源码

直接复制代码运行就行了,降低多少自己调整下。

### Uniapp 微信小程序实现图片上传功能 #### 准备工作 为了实现在Uniapp中微信小程序图片上传功能,需确保已安装并配置好必要的环境。这包括但限于完成项目的创建以及相关插件的引入。 #### 获取用户相册权限 在执行任何文件操作之前,应用程序应当向用户申请访问其设备上照片库者相机的权利。此过程可通过`uni.authorize()`方法来达成[^1]: ```javascript try { await uni.authorize({ scope: 'scope.writePhotosAlbum' }); } catch (error) { console.error('授权失败', error); } ``` #### 选取图片 利用`uni.chooseImage()`函数让用户挑选想要上传的照片。该函数允许指定可选参数如最大选择数量、原图还是压缩版等选项[^2]: ```javascript const res = await uni.chooseImage({ count: 1, // 默认9 sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ['album', 'camera'] // 可以指定来源是相册还是相机,默认二者都有 }); console.log(res.tempFilePaths); // 输出所选图片路径数组 ``` #### 将本地资源转换成网络链接 一旦选择图像之后,则需要将其上传服务器获得永久存储位置。这里会用到`wx.uploadFile` API,在实际项目里可能还需要处理进度条显示等问题[^3]: ```javascript await new Promise((resolve, reject) => { const uploadTask = uni.uploadFile({ url: 'https://example.com/upload', // 替换成自己的服务器地址 filePath: res.tempFilePaths[0], name: 'file', formData: { user: 'test' }, success(uploadRes) { resolve(JSON.parse(uploadRes.data)); }, fail(err){ reject(err); } }); // 进度变化事件监听器 uploadTask.onProgressUpdate((progressRes) => { console.log(`上传进度 ${progressRes.progress}`); }); }); ``` 上述代码片段展示了如何在一个基于Vue.js构建的应用程序内部集成完整的图片上传逻辑。值得注意的是,具体的URL应该替换为指向自己后端服务的有效HTTP(S) URL,并且根据实际情况调整表单字段名称和其他细节设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十一猫咪爱养鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值