前端经常会有图片压缩这样的需求,我尝试过很多种压缩方法,最后决定推荐lrz压缩方式
lrz(file, [options]);
1、file 通过 input:file 得到的文件,或者直接传入图片路径
2、[options] 这个参数允许忽略
3、width {Number} 图片最大不超过的宽度,默认为原图宽度,高度不设时会适应宽度。
4、height {Number} 同上
5、quality {Number} 图片压缩质量,取值 0 - 1,默认为0.7
库的话直接去http://www.bejson.com/ui/compress_img/
这个网站上下就行
公司已实现的网站:https://www.onlinedo.cn/img-compress
使用
html

 <div class="single_container"><div class="dragImgBox" id="dropZone">请拖拽本地文件到此处</div><div class="operation_container"><span class="choseImg">选择图片</span><input type="file" accept="image/*" style="display: none;" class="operation_chose"><input type="range" name="" class="range" id="range" min="0" max="100" value="60"><span class="operationWord">压缩率:<span>60</span>%</span><a class="batch_btn" href="/img-compresspro" id="pdfto_227" target="_blank">批量压缩</a></div><div class="imgFile_container" style="display: none;"><div class="imgFile_container_top"><p class="imgFileOsize">源文件大小:<span></span></p><p class="imgFileTsize">压缩后大小:<span></span></p><span class="imgFileDown">下载压缩图片</span></div><div class="imgFile_container_middle"><img src="" alt=""></div></div></div>

js
引入

<script src="/ols/Tpl/Index/Public/js/jquery-1.7.2.min.js"></script>
<script src="/ols/Tpl/Index/Public/picyasuo/js/jxtech_pic_zip.js"></script>

封装好的方法:压缩,下载,字节转换

//压缩方法function singleZip(file,quality){lrz(file,{quality:quality})//这里可以自定义一下图片压缩比率和压缩后的宽高.then(function(rst){var img = new Image();img.src = rst.base64;//将压缩后的base64赋给img的src,然后可以赋给标签的src属性imgbase64 = rst.base64;$(".imgFileOsize span").text(changSize(file.size))$(".imgFileTsize span").text(changSize(rst.fileLen))$(".imgFile_container_middle img").attr("src",rst.base64)$(".imgFile_container").show();})}function changSize(limit) {var size = "";if(limit < 0.1 * 1024){ if(limit < 0.1 * 100){size = 0;} else{size = limit.toFixed(2) + "B"  //小于0.1KB,则转化成B}                         }else if(limit < 0.1 * 1024 * 1024*1024){            //小于0.1MB,则转化成KBsize = (limit/1024).toFixed(2) + "KB"}else{                                            //其他转化成GBsize = (limit/(1024 * 1024 * 1024)).toFixed(2) + "GB"}var sizeStr = size + "";                        //转成字符串var index = sizeStr.indexOf(".");                 //获取小数点处的索引var dou = sizeStr.substr(index + 1 ,2)            //获取小数点后两位的值if(dou == "00"){                                //判断后两位是否为00,如果是则删除00                return sizeStr.substring(0, index) + sizeStr.substr(index + 3, 2)}return size;}function downLoad(base,name){var a = document.createElement('a');a.download = name;a.innerHTML = 'download';a.href = base;a.click();}

调用

var q_num = 0.4;   //压缩质量
var imgFile ;    //图片文件
var imgbase64; //压缩后得图片base64
var _fileName;

按钮点击选择图片压缩

//选择图片$(".operation_chose").change(function(e){imgFile = e.target.files[0];_fileName = imgFile.namesingleZip(imgFile,q_num)}) // 调整压缩比例$(".range").change(function(){q_num = 1 - parseInt($(this).val())/100;$(".operationWord span").text($(this).val())if(imgFile){singleZip(imgFile,q_num)}})// 下载图片$(".imgFileDown").click(function(){downLoad(imgbase64,_fileName)})

拖拽压缩

// 拖拽文件var dp = document.querySelector( '#dropZone' );document.addEventListener('drop', function (e) {e.preventDefault()}, false)document.addEventListener('dragover', function (e) {e.preventDefault()}, false)if(dp==null){return;}dp.addEventListener('dragover', function(e) {e.stopPropagation();e.preventDefault();e.dataTransfer.dropEffect = '导入';});dp.addEventListener("drop", function(e) {e.stopPropagation();e.preventDefault();var file = e.dataTransfer.files;imgFile = file[0];var fileName = file[0].name;_fileName = fileName;var fileType = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();var fileFlag;if(file.length>1){alert("文件只能单个上传")}else{if(fileType!=="png"&&fileType!=="jpg"&&fileType!=="webp"&&fileType!=="gif"&&fileType!=="jpeg"&&fileType!=="bmp"){alert("请上传图片格式")}else{singleZip(imgFile,q_num)}}});

end~

前端图片压缩(几乎无损)相关推荐

  1. 前端图片压缩上传(纯js的质量压缩,非长宽压缩)

    前端图片压缩上传(纯js的质量压缩,非长宽压缩) 此demo为大于1M对图片进行压缩上传 若小于1M则原图上传,可以根据自己实际需求更改. demo源码如下: <!DOCTYPE html> ...

  2. JS前端图片压缩上传

    JS前端图片压缩上传重点知识 最近在做一个手机端的图片上传,写了一个比较符合自己要求的方法,可供参考 在做这个功能模块时,我遇到了以下问题,都花费了大量时间: 1. 不知道怎么压缩图片,(代码和方法) ...

  3. 前端图片压缩上传(压缩篇)

    为什么说这是一篇比较适合小白的前端图片压缩文章呢?因为我也是一个刚工作半年的前端小白,最近接到了一个前端图片压缩上传的任务,通过各种百度博客完成了这项任务,但是任务完成后对各种技术细节却还不是特别理解 ...

  4. 移动前端—图片压缩上传实践

    在做移动端图片上传的时候,用户传的都是手机本地图片,而本地图片一般都相对比较大,拿iphone6来说,平时拍很多图片都是一两M的,如果直接这样上传,那图片就太大了,如果用户用的是移动流量,完全把图片上 ...

  5. 前端图片压缩 pngquanty

    进行前端开发,必然会用到图片压缩,在尽可能小的改变图片视觉效果前提下,尽可能大的压缩图片大小,进行png 图片压缩常用 pngquant,在服务器上 上传压缩过后的图片,以节省载宽Official w ...

  6. 前端图片压缩解决办法

    文章の目录 问题产生背景 解决办法 1.使用纯 js 解决 2.插件 js-image-compressor 写在最后 问题产生背景 在某一h5的项目,要求上传的图片格式为 base64 , 问题是用 ...

  7. 使用canvas进行图片压缩(前端图片压缩核心处理)

    一.原理:实际上就是利用canvas进行重新绘制 1.先将图片的file文件转成baseURL 2.创建一个image标签去接收文件获取图片的宽高和比例. 3.创建canvas画布设置画布的大小. 4 ...

  8. 利用H5Canvas进行前端图片压缩再上传笔记

    前端代码如下: //---------------------压缩图片上传插件--------------------------- var ImgFileGet_class = function(m ...

  9. js 前端 图片压缩

    /** File图片类型 callback回调函数,里面传压缩后的File **/ function compress(file,callback){var ms = file.size/1024;c ...

  10. 前端实现压缩图片的功能(vue-element)

    前言: 随着现在手机像素,拍照功能越来越好,随之而来的是本地图片越来越大,那么如何更好的将本地图片上传到后端接口呢?这是后台管理系统常见的场景和头疼的问题,这里分享下个人的方法. 实现效果: 如下图所 ...

最新文章

  1. 【prometheus】alertmanager 配置文件示例
  2. 二 用标准c语言实现hanoi塔问题,天大2016年1二月《数据结构》期末大作业考核要求.doc...
  3. VUEJS-checkbox全选全不选
  4. 云桌面 瘦终端_云桌面选择云终端还是瘦客户机?
  5. java uuid静态方法_Java UUID timestamp()方法与示例
  6. [css] 移动端的布局用过媒体查询吗?写出例子看看
  7. python通信原理_用python通过原始套接字发送scapy包
  8. topsis综合评价法_DRG如何评价临床医师绩效——以肿瘤科为例
  9. 我的WCF之旅(13):创建基于MSMQ的Responsive Service(转载)
  10. Internet Tv Radio Player v5.2
  11. Word 2013 无法撤销操作的错误
  12. 纤亿通之光纤传输知识必备大全
  13. RFT学习--环境配置
  14. whose UTF8 encoding is longer than the max length 32766
  15. 新浪微博认证——应用程序支持新浪微博登陆
  16. linux ubuntu bionic,在Ubuntu 18.04 Bionic Beaver Linux上安装和设置KVM
  17. 电脑运行java程序很卡_我的世界卡运行不流畅解决办法
  18. 从与迪思杰签约 看浪潮主机生态如何布局?
  19. petalinux添加AD9361驱动
  20. C语言:判断100-999中哪些数为水仙花数以及拓展应用

热门文章

  1. java中vo_java中的vo是什么
  2. html中class类怎么写,HTML class 属性 | 菜鸟教程
  3. Redhat7.5安装谷歌浏览器
  4. Windows系统服务器配置SSH服务
  5. 儿童python编程入门软件_一款儿童编程入门的理想工具——PythonTurtle
  6. ubuntu全版本安装 NVIDIA显卡驱动、以及重装、卸载
  7. win10共享打印机搜索不到计算机,w10共享打印机搜索不到如何处理
  8. 新手向python实现淘宝自动抢购
  9. 【Elasticsearch源码】 GET分析
  10. 【Heydrones】飞手百科第一篇:一定要看的无人机原理总结