前端本地客户端压缩图片,兼容IOS,Android,PC、自动按需加载文件

演示一下

本身试试

点我直接进入演示页面html

说明

在客户端压缩好要上传的图片能够节省带宽更快的发送给后端,特别适合在移动设备上使用。jquery

为何须要

  1. 已踩过不少坑,通过几个版本迭代,以及不少不少网友的反馈帮助、机型测试android

    • 图片扭曲、某些设备不自动旋转图片方向,没有jpeg压缩算法..
    • 不支持new Blob,formData构造的文件size为0..
    • 还有某些机型和浏览器(例如QQX5浏览器)莫名其妙的BUG..
  2. 按需加载(会根据对应设备自动异步载入JS文件,节省没必要要带宽)git

  3. 原生JS编写,不依赖例如jQuery等第三方库,支持AMD or CMD规范。github

尽管如此,在某些 Android 下依然有莫名其妙的问题,在您使用前,请必定大体浏览下 issues算法

如何获取

经过如下方式均可如下载:chrome

  1. 执行npm i lrz(推荐)
  2. 执行bower install lrz

接着在页面中引入npm

<script src="./dist/lrz.bundle.js"></script>

如何使用

方式1:

若是您的图片来自用户拍摄或者上传的,您须要一个input file来获取图片。后端

<input id="file" type="file" accept="image/*" />

接着经过change事件能够获得用户选择的图片api

document.querySelector('#file').addEventListener('change', function () { lrz(this.files[0]) .then(function (rst) { // 处理成功会执行 console.log(rst); }) .catch(function (err) { // 处理失败会执行 }) .always(function () { // 无论是成功失败,都会执行 }); });

方式2:

若是您的图片不是来自用户上传的,那么也能够直接传入图片路径。

lrz('./xxx/xx/x.png') .then(function (rst) { // 处理成功会执行 }) .catch(function (err){ // 处理失败会执行 }) .always(function () { // 无论是成功失败,都会执行 });

后端处理

后端处理请查看WIKI。

API

具体参数说明请查看WIKI。

兼容性

IE10以上及大部分非IE浏览器(chrome、微信什么的)

相关文章
相关标签/搜索