基于uni-app的小程序端的上传图片并进行图片压缩
2022/2/11 22:13:04
本文主要是介绍基于uni-app的小程序端的上传图片并进行图片压缩,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
<image :src="img" @tap.stop="clickImg"></image> // 第四步:在canvas绘制图片需要,不能隐藏!!! <canvas canvas-id="firstCanvas" id="firstCanvas" :style="'width:' + canvasWidth +'px;height:' + canvasHeight + 'px;position:absolute;left:-10000px;top:-10000px'"></canvas>
clickImg() { // 1. 选择图片 uni.chooseImage({ count: 1, //一次最多选择数量 sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ['album'], // 从相册选择 success: function (res) { if(res.tempFiles[0].size >= 10485760) { // 提示:文件大于10M,请重新选择! return; } // 2. 获取图片宽高 uni.getImageInfo({ src: res.tempFilePaths[0], success (ress) { // 3. 获取设备像素比,不获取最后图片展示有问题 wx.getSystemInfo({ success: function(info) { // 4. 在canvas绘制图片 const ctx = uni.createCanvasContext("firstCanvas", that); that.canvasWidth = ress.width/info.pixelRatio; that.canvasHeight = ress.height/info.pixelRatio; ctx.drawImage(ress.path, 0, 0, that.canvasWidth, that.canvasHeight); ctx.draw(false, setTimeout(function() { // 5. 压缩图片,不支持type=2d!!! uni.canvasToTempFilePath({ x: 0, y: 0, width: that.canvasWidth, height: that.canvasHeight, destWidth: that.canvasWidth, destHeight: that.canvasHeight, canvasId: "firstCanvas", quality: .5, success: function(data) { // 6. 将压缩的图片转变为二进制流 wx.getFileSystemManager().readFile({ filePath: data.tempFilePath, encoding: "base64", success: datas => { // 将二进制流文件复制给image,进行展示 that.img = "data:image/jpeg;base64," + datas.data; }, fail: (e) => { // 提示: 图片压缩失败 }, }) }, fail: (e) => { // 提示:图片信息获取失败 } }, that); }, 1000)); } }) }, fail: (e) => { // 提示:图片信息获取失败 } }) }, fail: (e) => { if(e.errMsg !== "chooseImage:fail cancel") { // 提示:上传失败 } }, }); },
这篇关于基于uni-app的小程序端的上传图片并进行图片压缩的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20微信小程序开发入门指南
- 2024-12-20小程序 createCameraContext() 怎么实现识别条形码功能?-icode9专业技术文章分享
- 2024-11-22微信小程序的接口信息py可以抓到吗?-icode9专业技术文章分享
- 2024-11-22怎样解析出微信小程序二维码带的参数?-icode9专业技术文章分享
- 2024-11-22微信小程序二维码怎样解析成链接?-icode9专业技术文章分享
- 2024-11-22微信小程序接口地址的域名需要怎么设置?-icode9专业技术文章分享
- 2024-11-22微信小程序的业务域名有什么作用-icode9专业技术文章分享
- 2024-11-22微信小程序 image有类似html5的onload吗?-icode9专业技术文章分享
- 2024-11-22微信小程序中怎么实现文本内容超出行数后显示省略号?-icode9专业技术文章分享
- 2024-11-22微信小程序怎么实现分享样式定制和图片定制功能?-icode9专业技术文章分享