前端图片压缩解决办法

包体积优化(二):压缩图片以及转化成webp插件,997页字节跳动Android面试真题解析火爆全网 随着我们业务的增加,我们的包体积越来越大,包体积越小对于咱们app的转化率越高,这章节讲一下图片的统一处理逻辑。占用包体积的最大的因素 so文件,使用动态加载so,不把so打包在包内,请参考动态加载so 图片的处理,使用aop思想处理本app、第三方aar以及第三方jar中的图片,本节的内容 二。一些减少包体积的方法 压缩代码,移除未使用的资源 。使用ProGuard进行压缩 减少枚举使用 精简语言资源 使用矢量图 仅支持特定密度 资源混淆 AndroidResGuard R文件内联 Bytex 插件 阅读详情

问题产生背景

在某一h5的项目,要求上传的图片格式为 base64 , 问题是用户上传的图片基本都在MB 级别,转base64 以后,图片的体积会增大30%以上,随着图片的体积增加,转换的base64 格式文件体积越大,如果此时前端不对用户上传的图片体积进行压缩,可能会导致服务器压力过大,从而崩溃;

解决办法

1、使用纯 js 解决

解决思路:
1、通过 input 文件选择框拿到要上传的图片文件file
2、FileReader.readAsDataURL() 读取 file 内容。完成后 result 属性中将包含一个 data: URL格式的 Base64字符串以表示所读取文件的内容。
3、创建一个 img 标签,将 FileReader 对象返回的 base64 格式 url 给到一个 img 标签
4、img.onload() 函数中获取图片的尺寸,再通过 canvas.drawImage() 绘制图像,设置尺寸或者图像的质量等
canvas.toDataURL(file.type, quality) 设置图像的质量,将 canvas 转换为图片 base64 格式
代码如下所示:

compressImg(file) {
   
   
    const reader = new FileReader();
        // readAsDataURL 方法会读取指定的 Blob 或 File 对象。读取操作完成的时候,readyState 会变成已完成DONE,并触发 loadend (en-US) 事件,
        // 同时 result 属性将包含一个data:URL格式的字符串(base64编码)以表示所读取文件的内容。
        reader.readAsDataURL(file);
        reader.onload = () => {
   
   
          const img = new Image();
          img.src = reader.result;
          img.onload = () => {
   
   
            // 图片的宽高
            const w = img.width;
            const h = img.height;
            const canvas = document.createElement("canvas");
            // canvas对图片进行裁剪,这里设置为图片的原始尺寸
            canvas.width 
前端实现图片压缩(干货总结) 前文提要1. 使用HTML5的``元素2. 利用第三方库(推荐)3. gif图片压缩(拓展)注意事项文前推荐一下??读取图片:使用FileReader或Image对象加载图片。绘制到:将图片绘制到上,通过调整的尺寸或绘图参数来控制压缩效果。导出图片:使用方法将内容转换为Base64编码的图片,或使用方法获取Blob对象,以便进一步处理或上传。 阅读详情

相关推荐

前端压缩图片上传

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

weixin_45032067的博客 5769

纯前端图片压缩神器 Compressor

本文可在公众号「德育处主任」免费阅读现在大部分网站都会有图片,不管这个图片是用来展示的,还是需要上传到服务器的。但图片的体积往往比文字大,会占用更多的服务器空间,也会消耗用户更多的流量。所以在适当范围内压缩一下图片是很有必要的。今天介绍一款纯前端的图片压缩工具:compressor.js。虽然这是一款有损的图片压缩工具,但压缩质量还是挺不错的,尤其是它可以在前端运行,对于要上传图片到服务器的业务,可以考虑一下用 compressor.js。

weixin_39415598的博客 1399

前端性能优化系列——图片压缩与优化

前端性能优化一直是Web开发人员头疼的问题,作为一个技术人的我,每天都要面临着压缩图片、减少HTTP请求数、节省流量等方面的各种问题。在本文中,我将从图片压缩及其优化技术的原理出发,结合实际案例,详细地阐述如何对图片进行压缩并提升用户体验。图像压缩技术JPEG压缩PNG压缩GIF压缩文件体积大小控制惰性加载策略WebP格式与浏览器兼容性HTTP请求数量控制静态资源域名分片HTTP缓存策略流量节省策略服务端图片压缩CDN加速。

AI天才研究院 1691

web-image-compression:一款轻量且简单的web前端图片压缩插件

rem-fit 一个轻量级的简单的web前端图片压缩插件 npm install web-image-compression import ImageCompression from "web-image-compression" var imageCompression = new ImageCompression({ width:1920, quality:0.6, mimeType:'webp' }) imageCompression.compress(file).then(newFile=>{ console.log(newFile) }) 具体使用方法请到我的网站查看:

【Unity】YooAsset + HybridCLR热更

本文介绍了Unity游戏开发中的热更新技术方案,重点对比了资源热更和代码热更的主流工具。资源热更方面分析了Asset Bundle、Addressable和YooAsset的优缺点;代码热更部分比较了xLua、ILRuntime、InjectFix和HybridCLR的性能特点。文章详细演示了HybridCLR+YooAsset的实践方案,包括加载热更新程序集、反射调用热更代码、资源打包部署等完整流程。该方案通过原生运行时实现程序集级热更,具有极低性能损耗和全生命周期适用性,配合YooAsset简化了资源管

欢迎指错||纠正||建议||水评+点赞&&评论&&关注&&转发 2901

TIBCO Spotfire 入门指南

数据分析工具 - TIBCO Spotfire 入门指南(一) 文章目录数据分析工具 - TIBCO Spotfire 入门指南(一)前言一、Sportfire 是什么?二、使用Sportfire 创建一个简单的数据分析模型1.设置分析(加载数据)2.编辑数据源3.创建图表3.1 创建交叉表3.2 创建饼图3.3 创建树形图3.4 创建散点图3.5 创建自定义筛选器总结 前言 通过对本指南的学习,你可以了解到如何开始用TIBCO Sportfire分析数据,并能详细了解您可以做什么以及怎么做 一、Spo

kaiakai111的博客 1万+

从零开始:Ubuntu 24.04 LTS + Win11双系统安装教程

本文将简单直白介绍如何从零开始在同一台电脑上安装 Ubuntu 24.04 LTS 和 Windows 11,你可以在需要进行专业开发或运维工作时,轻松切换到 Ubuntu,享受其带来的高效与自由;而在日常学习生活和娱乐休闲时,依然可以无缝使用熟悉的 Windows 环境。

萑澈的博客 8087

OpenSpec 从入门到精通:AI 时代的最佳 SDD 范式

同样都是「先写规范再写代码」的开源 SDD 框架,OpenSpec(https://github.com/fission-ai/openspec) 展现出了极高的工程性价比,无论是使用 Claude Code、Cursor 还是 Aider,都可以无缝接入 OpenSpec 的规格管理层。这些问题需要人来做判断,AI 做不了这个主。整个流程跑下来,OpenSpec 产出的效果还是令人满意的,一些前期没有考虑到的细节 AI 都补上了,生成的相关文档也有利于开发人员的知识对齐,可以尝试在团队内部推广。

qq_39093474的博客 914

使用TEA5767和stm32制作一台数字FM收音机

本节我们来使用stm32控制一款集成收音机芯片TEA5767,来制作一台FM收音机。 TEA5767是一款低功耗立体声收音IC,接收频率76MHz~108MHz(适应日本/美国/欧洲各FM频段选择)并可以使用软件进行静音和消除噪音。 主要电性能指标:工作电压:2.5V~5.0V,工作电流10mA,立体声分离度30dB,信噪比60dB,输出信号电平75mV。支持I2C总线通信、3-wire总线。 1)硬件设计 TEA5767芯片外围需要搭配较多的电阻、电容、电感、晶振等器件,而且高频电路的PCB设

小白白学电子 1万+

手把手教你学Simulink——基于电机驱动系统的场景实例:永磁同步电机(PMSM)在电动汽车中的矢量控制仿真

随着全球对环境保护的关注增加,电动汽车(Electric Vehicle, EV)因其环保特性而受到广泛关注。永磁同步电机(Permanent Magnet Synchronous Motor, PMSM)由于其高效率、高功率密度和良好的动态响应性能,在电动汽车驱动系统中得到了广泛应用。矢量控制(Field-Oriented Control, FOC)是实现PMSM高性能控制的关键技术之一,它能够实现对电机转矩和磁场的独立控制,从而达到类似直流电机的控制效果。本文将详细介绍如何使用来构建一个。

MHD0815的博客 1万+

【软考高级架构】论文范文12——论生成式AI在软件开发中的应用与挑战

随着生成式AI技术的跨越式发展,以大语言模型为代表的生成式AI正在深刻改变软件开发的传统模式。在代码生成、测试构造、文档编写等环节,生成式AI展现出显著的效率提升潜力,但其应用也面临着代码质量不可控、安全漏洞植入、版权合规等严峻挑战。本文以笔者主导的某大型金融企业智能研发辅助平台建设项目为案例,围绕生成式AI在软件开发中的应用实践与应对挑战的策略展开论述。笔者担任系统架构师,负责平台架构设计、模型选型、质量保障机制及安全防线构建。

qq837993702的博客 272

通过WorkVisual连接KUKA机器人的具体方法

通过WorkVisual连接KUKA机器人的具体方法

Robot_PLC_HMI_Automation 6828

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 如何使用 js 过滤文本框表情符号
下一篇: useMemo 使用误区
前端小二哥
前端小二哥 新星创作者: 前端开发技术领域 新星创作者: 前端开发技术领域
博客等级 码龄8年 7055粉丝 62原创
评论 15
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端小二哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值