基于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-11-13微信小程序如何封装接口域名?-icode9专业技术文章分享
- 2024-11-13如何在微信小程序中实现直传功能?-icode9专业技术文章分享
- 2024-11-13如何在小程序的地图组件中添加标记和文字?-icode9专业技术文章分享
- 2024-11-13在微信小程序的地图组件中如何实现自定义标记和气泡?-icode9专业技术文章分享
- 2024-11-01微信小程序教程:零基础入门到实战
- 2024-11-01微信小程序全栈教程:从入门到实践
- 2024-10-31微信小程序怎么实现关注公众号功能-icode9专业技术文章分享
- 2024-10-30微信小程序cover-view,支持bindtap吗-icode9专业技术文章分享
- 2024-10-30微信小程序的cover-image支持bindtap吗-icode9专业技术文章分享
- 2024-10-30微信小程序web-view怎么设置高度?-icode9专业技术文章分享