前端实现图片压缩上传功能

前端压缩图片上传 背景 上传图片文件这种需求在项目中经常遇到,不管是pc端还是移动端都会遇到上传图片的功能。由于现在手机拍摄功能的日益强大,相机拍摄的图片也越来越大动辄就是几M甚至十几M。这样上传可能对服务器会造成不小的压力,上传速度和体验也会大打折扣,所以经常就要限制上传的大小尺寸。如果在前端对图片进行压缩后上传,这样问题就能得到一定的缓解。 实现思路 通过input文件选择框拿到要上传的图片文件file FileReader.readAsDataURL()读取file内容。完成后result属性中将包含一个dat 阅读详情

以移动端为例,在H5上传图片时,由于机型 / 网速 / 流量等限制,在低版本机型上经常会出现上传的图片太大导致上传很慢甚至崩溃的情况,所以需要对在某些情况下需要对上传的图片进行压缩上传。

以下以移动端使用Vue框架为例:

(以下主要实现思路来自张鑫旭大神的博客:?https://www.zhangxinxu.com/wordpress/2017/07/html5-canvas-image-compress-upload/)

 

话不多说进入正题

第一步:使用原生input上传图片

<input type="file" class="file-btn" @change="changeImg($event)" />

上面这句代码中可以发现,我没有指定上传的文件的格式,因为在之前的开发过程中发现,input在设置了accpet=“image/*”之后,在某些低版本安卓机(微信浏览器)上,会出现上传jpeg格式的图片无法触发input的change的事件的情况,所以后来就把input的图片类型去掉了,验证文件类型在change事件触发后处理或者交由后端校验。

 

第二步:将图片利用canvas的drawImage进行按比例重绘

在接收到需要上传的图片之后,我们可以做一些限制操作,比如限制上传图片的大小 / 校验文件的格式等等,这里就不写出来了。直接切入正题:

changeImg(e){
    const imgFile = e.target.files[0];
    con
前端图片压缩解决办法 本篇文章提供前端图片压缩的方法 阅读详情

相关推荐

前端实现图片压缩(干货总结)

前文提要1. 使用HTML5的``元素2. 利用第三方库(推荐)3. gif图片压缩(拓展)注意事项文前推荐一下??读取图片:使用FileReader或Image对象加载图片。绘制到:将图片绘制到上,通过调整的尺寸或绘图参数来控制压缩效果。导出图片:使用方法将内容转换为Base64编码的图片,或使用方法获取Blob对象,以便进一步处理或上传。

ADFVBM的博客 1719

如何有效实现前端压缩图片并上传功能

  随着现在手机的像素越来越高,很多照片动辄几兆甚至十几兆,上传后在服务器端压缩已经越来越不能满足当今的需求。这对于许多技术人员来说,处理起来这样的问题往往不知道该怎么下手,那么下面就跟大家讲解一下如何在前端进行图片压缩后上传到服务器。  以上传单张图片为例,多张图片同理,多嵌套一层循环即可。代码实现如下:html:&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head...

燚轩软件科技 2329

实现H5移动前端的图片批量压缩上传功能

随着移动互联网的发展,图片作为信息载体,在前端页面中扮演着越来越重要的角色。然而,大量的高清图片会导致页面加载缓慢,影响用户体验。因此,H5移动前端图片批量压缩上传功能应运而生。本章将对图片压缩上传的概念、应用场景、以及在前后端的实现流程做初步介绍。FileReader API是Web应用中常用的API之一,它允许Web应用异步读取存储在用户计算机上的文件(比如用户的硬盘驱动器),使用File或Blob对象来指定要读取的文件或数据。FileReader主要适用于读取用户通过。

weixin_30674431的博客 848

智能织梦:基于Rokid AR眼镜的家庭情感记忆增强系统设计与实践

本文介绍了基于Rokid AR眼镜的'智能织梦'系统,通过增强现实技术捕捉和重现家庭情感记忆。系统利用多模态传感器和轻量级情感识别模型,自动记录家庭互动中的情感峰值时刻,并生成沉浸式记忆片段。测试数据显示,该系统显著提升了家庭情感互动的频率和质量,特别适用于多代同堂家庭和记忆唤醒场景。

sre5engineer的博客 532

feko金属球远场RCS双站

feko金属球远场RCS双站

a264672的博客 6901

代码审计工具学习之RISP(安装以及初步操作)

1 代码审计 1.1名词解释 代码审计(Code audit)是一种以发现程序错误,安全漏洞和违反程序规范为目标的源代码分析。软件代码审计是对编程项目中源代码的全面分析,旨在发现错误,安全漏洞或违反编程约定。 它是防御性编程范例的一个组成部分,它试图在软件发布之前减少错误。 C和C ++源代码是最常见的审计代码,因为许多高级语言(如Python)具有较少的潜在易受攻击的功能(例如,不检查边界的函数)。 顾名思义就是检查源代码中的安全缺陷,检查程序源代码是否存在安全隐患,或者有编码不规范的地方,通过..

weixin_52515588的博客 1万+

mysql 计算不同胜率的活跃玩家的次日,3日,7日留存率

它根据每天的日期(logymd)和最高段位(max_rank)、胜率段落(win_rate_segment)进行分组,并计算总玩家人数(total_players)、第二天的留存人数(next_day_players)、第三天的留存人数(day3_players)和第七天的留存人数(day7_players)。注意:不是新手留存,是段位活跃玩家留存;最终的结果则是将留存数据进行展示,按照日期(date)、最高段位(rank_level)、胜率段落(win_rate_segment)进行排序。

weixin_42698221的博客 1830

HMC5883L磁力计在STM32F4上的I2C驱动与数据校准实战

本文详细介绍了HMC5883L磁力计在STM32F4平台上的I2C驱动开发与数据校准实战。通过解析寄存器配置、数据读取处理和椭圆拟合校准算法,帮助开发者实现精准的地磁测量,特别适用于无人机导航和机器人系统中的航向确定与陀螺仪漂移修正。

2y3u4i5o6p的博客 1035

逆向分析踩坑记:当Frida在x86模拟器上‘看不见’ARM的so文件时,我们该如何手动定位与验证?

本文探讨了在x86模拟器上使用Frida进行逆向分析时,无法检测到ARM架构so文件的解决方案。通过分析内存映射、Frida的视觉盲区及手动定位技术,提供了兼容层、混合调试和原生ARM环境三种实用方案,帮助逆向工程师突破工具限制,实现精准定位与验证。

weixin_27697385的博客 217

HTML蓝色动态爱心(完整代码)

HTML语言实现蓝色动态爱心的完整代码。

AIGC 8万+

SAP-MM:SAP MM(物料管理)模块 的系统化学习计划

SAP MM模块的系统化学习计划

baidu_35680696的博客 1540

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: Vue路由跳转传递参数()
下一篇: JS原型(一)——原型对象
EarlEcho
博客等级 码龄12年 12粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值