原生JS,前端压缩图片方案

在移动互联网高速发展的今天,有太多太多的应用需要用户在移动Web上传图片文件。然而在上传图片前就对图片进行了压缩处理,从而提高图片的上传效率,减少用户的流量浪费,后台处理和用户体验也会得到提升。

为什么要这样做

遇到的问题:

1:在低网速下上传图片进度缓慢,用户体验差

2:后台处理较大的文件压力大。

3:业务需求要求文件大小、、等等(或许还有更多)

在处理以上问题之前,需要给自己一些疑问

1:图片是否有必要保存原图

2:主要使用场景在移动端还是在PC端(图片处理消耗的性能和速度需要考虑)

3:需要上传的图片一般大小大致在什么范围(处理图片的性能消耗时长)

ImgB64.js用法

1、创建ImgB64,初始化压缩图片的参数:如下

        var img=new ImgB64({            size:1024,//需要压缩图片的最小值。不填默认压缩所有,此处单位是Kb            quality:20//图片自定义压缩质量,不填默认50(最大值是100)        })    2:引用,因为读取文件,img加载读取原始高宽,引用了异步的onload,此处传入方法执行处理后的图片base64。        img.setOption({            files:ele.files[0],            showImg:function(imgBase64){

            },        callback:function(imgBase64){            console.log(imgBase64);        }    })        Git:ImgB64    《后续持续完善……》

原文地址:http://blog.51cto.com/8312284/2072917

时间: 2024-08-27 20:54:54

原生JS,前端压缩图片方案的相关文章

原生 js前端路由系统实现2之代码可读性 和可扩展性

前一篇 尝试着实现了前端路由的部分功能 原生 js前端路由系统实现1 代码可读性 影响代码可读和易于理解的因素 1 代码规范 2缩进空格 3减少函数嵌套层次 4函数单一职责 5.... 以上这些顶多只能在外观上面看起来清晰(也不一定真的清晰),但随着代码量的增大  代码依然非常难读和易于理解 如果给你几十行代码,程序员通过琢磨也能短时间搞清楚,如果给你上万行代码 即便技术大牛也得花大量的时间去阅读和调试才能看懂 影响代码可读性的主要原因是 代码的多少 以下是上次实现路由的代码 去掉兼容AMD等库

纯原生js移动端图片压缩上传插件

前段时间,同事又来咨询一个问题了,说手机端动不动拍照就好几M高清大图,上传服务器太慢,问问我有没有可以压缩图片并上传的js插件,当然手头上没有,别慌,我去网上搜一搜. 结果呢,呵呵...诶~又全是基于jquery.zepto的(这句话似乎吐槽次数太多了...),然后我也就不吐槽了, 然后当然是自己做了,先上图: 纯原生js的移动端图片压缩上传插件,不依赖任何库 用法 在html页面中引入input标签,通过自定义属性data-LUploader绑定点击触发的标签id,写法如下: <div cla

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

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

原生JS实现图标图片拖拽

实现功能: 原生JS实现图标图拖拽,拖拽的过程中不断输出该div的left.top值. 用html5的drag来实现拖拽有兼容性问题,使用拖拽插件代码又很多,而这个拖拽demo代码少,并且兼容所有浏览器,很值得在项目中使用, css样式如下: #div1{ width: 100px; height: 100px; background-color: #4D4D4D; position: absolute; cursor: pointer; -webkit-box-shadow: 3px 3px

前端压缩图片代码,支持移动端和pc 端,还有拍照后获取到的照片

1. upload   使用者调用的方法 2. rotateImg  旋转照片,用于把iOS拍照后获取到的图片摆正 3. dataURLtoFile 将压缩后的图片转为file 对象,区分一个 blob 和 base64, 兼容哪个就用哪个 4. 得先引入  exif-js  用于拿到图片信息,确定 iOS 怎么旋转的 1 import EXIF from 'exif-js' 2 var picValue = null, 3 headerImage = '', 4 imgName = '', 5

原生 js前端路由系统实现3之代码 构建工具 和 querystring功能

构建 目前前端构建工具流行的是 grunk.js 功能是大而全,但往往大而全的东西为了多样性 需要做额外的配置  我还是想要有一个专门为自己特性项目而生构建工具 我不想加载第三方的node模块,也不想写配置 ,想要的功能也很简单只是根据文件名字进行合并 build.js 名字规则: a-b-c.js 或者 a-b-c.txt a代表文件合并的顺序(这个顺序跟文件显示的顺序一致) 第一固定为0 最后固定为e  b代表合并后的文件名字  c代表自己的文件名字 以下代码会 寻找当前目录下src目录中的

原生js实现的图片左右切换

效果比较单一,就是两个左右按钮,点击图片就会切换,图片是用js添加的. 上代码: html: 1 <div id="img_container"> 2 <div id="imgbox" style="left:0"></div> 3 </div> 4 <div style="text-align:center"><a href="javascript:

原生 js前端路由系统实现1

在看了百度手机小说网站源码之后  突然兴起想自己实现一个基于网页hash技术的路由系统 源码 我放到oscgit上面了 地址: https://git.oschina.net/diqye/route.js 适用场景: 局部刷新页面    通过ajax局部刷新页面会有一个问题就是 分享url或者刷新页面时不能记录 当前网页的状态  前端路由可解决这个问题 期望的路由: 1  当访问网页 http://localhost/index.html 或者 http://localhost/index.ht

canvas前端压缩图片

参考网上的用法,下面是利用canvas进行的图片压缩 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport"> <meta c