今天记录一下uniapp写小程序上传图片压缩的功能

首先定义上传图片的方法

然后res.tempFilePath[0]就是图片的临时路径

其次定义压缩图片然后获取压缩后图片大小的方法,方法使用canvas

首先咱们写一个canvas的标签

在data里定义宽和高首先先为0

最后定义压缩图片的方法,这个我直接放代码,方便各位小伙伴复制

// 图片压缩
compressImage(src) {
let that = this
uni.getImageInfo({
src,
success(res) {
var ratio = 2;
var canvasWidth = res.width //图片原始长宽
var canvasHeight = res.height
while (canvasWidth > 400 || canvasHeight > 400) { // 保证宽高在400以内
canvasWidth = Math.trunc(res.width / ratio)
canvasHeight = Math.trunc(res.height / ratio)
ratio++;
}
that.cWidth = canvasWidth
that.cHeight = canvasHeight
var ctx = uni.createCanvasContext('canvas') ctx.drawImage(res.path, 0, 0, canvasWidth, canvasHeight) ctx.draw(false, setTimeout(() => {
uni.canvasToTempFilePath({
canvasId: 'canvas',
destWidth: canvasWidth,
destHeight: canvasHeight,
fileType: 'jpg',
quality: 0.4,
success: function(res1) {
uni.getFileInfo({
filePath: res1.tempFilePath,
success(ress) {
console.log(ress)
}
}) },
fail: function(res) {
console.log(res.errMsg)
}
})
}, 100)) //留一定的时间绘制canvas
},
fail(err) {
console.log(err.errMsg)
}
})
},

最后压缩后的图片大小就在ress里面了,图片临时路径是在res1中

今天的记录就到此了

记录以下uniapp写小程序然后进行图片上传压缩的更多相关文章

  1. 微信小程序简单封装图片上传组件

    微信小程序简单封装图片上传组件 希望自己 "day day up" -----小陶 我从哪里来 在写小程序的时候需要上传图片,个人觉得官方提供的 Uploader 组件不是太好用, ...

  2. 小程序-扩展能力图片上传Uploader组件

    微信小程序中有一些扩展组件可以用,例如其中的图片上传组件,不论样式还是上传时的动画,都比较好,在使用过程中也遇到了一些问题,在这记录一下,也期望能让后来用的人少走弯路. 第一步,首先访问网址,http ...

  3. 微信小程序:多张图片上传

    最近在写小程序的相册,需要多张图片的上传.因为小程序不支持数组的多张图片同时上传,然后根据自己的需求+借鉴网上各位大神的案例,总算搞定.分享下,不足之处,多多指教哦 页面wxml: <form ...

  4. 微信小程序--更换用户头像/上传用户头像/更新用户头像

    changeAvatar:function (){ var that=this; wx.chooseImage({ count: 1, // 默认9 sizeType: ['original', 'c ...

  5. 微信带参数的小程序码生成并上传到七牛云(java)

    在大家看正式内容之前请耐心的听我把这段话说完:我冒昧的猜一下,你为了解决问题估计已经看了很多文章了,如果这边文章能给你带来帮助,不胜荣幸,如果有错误也请批评指正,共同进步,我之前在完成这个功能之前,从 ...

  6. Day12-微信小程序实战-交友小程序-搭建服务器与上传文件到后端

    要搞一个小型的cms内容发布系统 因为小程序上线之后,直接对数据库进行操作的话,慧出问题的,所以一般都会做一个管理系统,让工作人员通过这个管理系统来对这个数据库进行增删改查 微信小程序其实给我们提供了 ...

  7. uniapp 微信小程序-点击图片放大图片

    <view class="pij-cont-imgbox" v-if='item.images.length>0'> <view class="p ...

  8. 微信小程序入门八头像上传

    1. action-sheet 底部弹出可选菜单组件 2. wx.uploadFile 将本地资源上传到服务器 3. wx.chooseImage 从本地相册选择图片或使用相机拍照. 4. wx.pr ...

  9. uniapp开发小程序

    uniapp开发小程序 uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS.Android.Web(响应式).以及各种小程序(微信/支付宝/百度/头条 ...

  10. 【随笔】这段时间没有写博客是因为一边看Qt5的帮助文档一边写小程序

    长话短说,因为和做程序员的以前的同学联系了一下,知道自己有很多不足,加之接到一个培训机构的人打来的电话稍微打击了一下,虽然那个人满嘴跑火车想装做和我很谈得来,但是我依然看到了自己没有写过任何命令行以外 ...

随机推荐

  1. 2个月搞定计算机二级C语言——真题(5)解析

    1. 前言 本篇我们讲解2个月搞定计算机二级C语言--真题 5 2. 程序填空题 2.1 题目要求 2.2 提供的代码 #include <stdio.h> double fun(int ...

  2. Selenium弹框处理

    Selenium中有三种弹框,本文介绍了处理三种弹框的方法 一.Selenium三种弹框 alert:用来提示,显示一个带有指定消息和确认按钮的警告框 confirm:用于确认,显示一个带有指定消息和 ...

  3. 我开源了一个短视频应用(Go+React)|DouTok2.0 项目介绍

    前言 大家好,这里是白泽,拖更了一段时间,抱歉.在 DouTok2.0 可以初步允许大家接入开发之后,这篇文章才得以出炉. DouTok:一个开源的 web 端的短视频应用,采用微服务架构,包含前后端 ...

  4. 有Redis为什么还要本地缓存?谈谈你对本地缓存的理解?

    本地缓存是将数据存储在应用程序所在的本地内存中的缓存方式.既然,已经有了 Redis 可以实现分布式缓存了,为什么还需要本地缓存呢?接下来,我们一起来看. 为什么需要本地缓存? 尽管已经有 Redis ...

  5. Ymodem协议详解

    Xmodem.Ymodem和Zmodem协议是最常用的三种通信协议. Xmodem协议是最早的,传输128字节信息块. Ymodem是Xmodem的改进版协议,具有传输快速稳定的优点.它可以一次传输1 ...

  6. IPC-7711/7721D-中文版 CN 2024 电子组件的返工、修改和维修标准

    IPC-7711D-7721D-中文版 CN 2024 电子组件的返工.修改和维修标准 链接:https://pan.baidu.com/s/1r5dm9vsj4-Oj2Jw0HgeTHw?pwd=1 ...

  7. rabbitmq消息中间件的初步探索

    在上次学xattr的时候用它简单实现一个中间件,我去了解了一下rabbitmq这个消息中间件,感觉理论上还是挺好用的,给一般并发量的系统用足够了. 首先安装这个服务. sudo apt search ...

  8. 在使用openbms的时候发现的Thinkphp action 大小写问题

    下载了 https://gitee.com/openbms/openbms 看了看源代码,调试了一下普通用户的demo 用户 发现无法上传图片,admin不会,查看了源代码 发现是这样的 admin用 ...

  9. MyBatis入门示例——MyBatis学习笔记之一

    MyBatis是另外一款优秀的ORM框架,前身为iBATIS.凡事预则立,不预则废.鉴于以后的项目可能会用到它,因此决定提前学习.本着分享和督促自己学习的目的,笔者将陆续把学习笔记贴出,希望对朋友们有 ...

  10. 基于antlr的表达式解析器——函数生成(通过freemarker)

    第一步.新建一个模板文件以.ftl结尾. Max.ftl /* * Copyright 2002-2007 Robert Breidecker. * * Licensed under the Apac ...