当前位置: 首页 > news >正文

利用js实现图片压缩功能

图片压缩在众多应用场景中扮演着至关重要的角色,尤其是在客户端上传图片时。原始图片往往体积庞大,直接上传不仅消耗大量带宽资源,还可能导致上传速度缓慢,严重影响用户体验。因此,在图片上传至服务器前对其进行压缩处理成为了一项关键优化措施。通过压缩,图片文件大小显著减小,从而加快上传速度,提升效率,确保用户获得流畅无阻的使用体验,特别是在网络条件不佳的情况下,这一优化显得尤为重要。
简而言之,图片压缩能有效解决大文件上传带来的带宽压力与时间成本问题,是提高应用响应速度、增强用户满意度的有效手段。它通过对图片进行智能处理,去除冗余数据,在尽可能保持视觉质量的同时大幅缩减文件大小,使得图片上传过程更加迅速高效,进而优化整个应用的性能表现。

一、效果演示

在这里插入图片描述

二、程序代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script><style>div {text-align: center;}input {height: 50px;line-height: 50px;}</style>
</head><body><input id="file" type="file" accept="image/*"><div>压缩前的图片大小:<span id="beforeSize"></span><p><img id="before" /></p></div><div>压缩后的图片大小:<span id="afterSize"></span><p><img id="after" /></p></div><script>$("#file").change(function () {const file = this.files[0];$("#before").attr("src", URL.createObjectURL(file));$("#before").css({width: '500',height: 'auto'});const fileSize = file.size / 1024;$("#beforeSize").html(fileSize.toFixed(2) + " KB");if (!file) return;compressImage(file, 1, 0.7).then(base64 => {$("#after").attr("src", base64);$("#after").css({width: '500',height: 'auto'});const sizeInKB = (base64.length * 3 / 4) / 1024;$("#afterSize").html(sizeInKB.toFixed(2) + " KB");});});function compressImage(file, maxWidth, quality) {return new Promise((resolve, reject) => {const reader = new FileReader();reader.onload = function (e) {const img = new Image();img.onload = function () {const canvas = document.createElement('canvas');const ctx = canvas.getContext('2d');canvas.width = img.width;canvas.height = img.height;ctx.drawImage(img, 0, 0);resolve(canvas.toDataURL('image/jpeg', quality || 0.9));};img.src = e.target.result;};reader.readAsDataURL(file);});}</script>
</body></html>
http://www.lryc.cn/news/398033.html

相关文章:

  • 2024.7.10 刷题总结
  • ES6 async 函数详解 (十)
  • 【安全设备】入侵检测
  • 07浅谈大语言模型可调节参数tempreture
  • Redis数据同步
  • 快手矩阵源码,快速拥有自己的短视频矩阵
  • notes for datawhale 2th summer camp NLP task1
  • 攻防世界(PHP过滤器过滤)file_include
  • PostGIS2.4服务器编译安装
  • 虚拟机安装Linux CENTOS 07 部署NET8 踩坑大全
  • 【C++】CMake入门
  • 云WAF | 云waf保护你的网络安全
  • c++初阶知识——类和对象(1)
  • Vue 3 组件通信全解:从基础到高级技巧
  • 大众汽车入职SHL在线测评、英语口语、招聘笔试如何通过、考点分析|备考建议
  • 《植物大战僵尸杂交版》2.2:新版本体验与下载指南
  • 7月11日学习打卡,数据结构栈
  • 数据结构第20节 快速排序以及优化
  • 3分钟理解超键、候选键、主键
  • Centos忘记密码,重置root密码
  • Android初学者书籍推荐
  • 安卓文件上传照片单张及多张照片上传实现
  • 小白学webgl合集-import.meta.url 和 new URL() bug
  • pico+unity3d开启彩色透视
  • python常用命令
  • 使用定时器消除抖动
  • IOS热门面试题一
  • 构建LangChain应用程序的示例代码:62、如何使用Oracle AI向量搜索和Langchain构建端到端的RAG(检索增强生成)pipeline
  • ffmpeg转换MP4为gif命令
  • kotlin Flow 学习指南 (三)最终篇