今天记录一下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. mysql 查询两个日期之间所有天数(查询近两个月所有日期)

    本文转自博文:https://blog.csdn.net/qq_42795259/article/details/126722209 遇到一个需求需要查询近两个月所有日期,如下图: 首先实现解决问题如 ...

  2. games101_Homework5

    使用光线追踪来渲染图像,实现两个部分:光线的生成和光线与三角的求交 你需要修改的函数是: • Renderer.cpp 中的 Render():这里你需要为每个像素生成一条对应的光 线,然后调用函数 ...

  3. 17.Kubernetes搭建高可用集群

    Kubernetes搭建高可用集群 前言 之前我们搭建的集群,只有一个master节点,当master节点宕机的时候,通过node将无法继续访问,而master主要是管理作用,所以整个集群将无法提供服 ...

  4. 51单片机入门:LED灯控制(01)

    第一篇博客,博客园注册很久却一直没有好好利用,今天把以前的文章都删掉,就当开个好头吧. 希望在以后的时间中,自己能够认真.努力.珍惜时间. 零基础入门51单片机 单片机(Microcontroller ...

  5. Spring开闭原则的表现-BeanPostProcessor的扩展点-1

    上接Spring事务处理时自我调用的解决方案及一些实现方式的风险继续分析,在分析上篇的问题之前,我们需要了解下BeanPostProcessor概念和Spring容器创建Bean的流程. 一.Bean ...

  6. 基于docker的常用服务搭建

    使用docker搭建相关服务: 1. MySQL服务 1) 拉取镜像 docker pull mysql:5.7 # 拉取 mysql 5.7 docker pull mysql # 拉取最新版mys ...

  7. LGR-204-Div.2

    Contest link 质量不错的比赛. A 比较明显的题,贪心往下做就可以. #include <bits/stdc++.h> using i64 = long long; const ...

  8. px2rem 实现vue rem 自适应/

    npm install postcss-px2rem px2rem-loader --save 新建js 文件rem.js // rem等比适配配置文件 // 基准大小 const baseSize ...

  9. 《JavaScript 模式》读书笔记(5)— 对象创建模式3

    这一篇,我们主要来学习了解下沙箱模式以及静态成员的相关内容. 五.沙箱模式 沙箱模式(sandbox pattern)解决了命名空间模式的如下几个缺点: 对单个全局变量的依赖变成了对应用程序的全局变量 ...

  10. NVM管理多个Node版本

    ​在项目中,我们常常会遇到node版本问题的一些报错,像是vue 3需要node10以上版本,不同的 node-sass 版本需要安装不同的 node.js 版本,为了统一管理node版本,我们需要用 ...