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


    演示一下

    自己试试

    点我直接进入演示页面

    说明

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

    为什么需要

    1. 已踩过很多坑,经过几个版本迭代,以及很多很多网友的反馈帮助、机型测试

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

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

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

    如何获取

    通过以下方式都可以下载:

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

    接着在页面中引入

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

    如何使用

    方式1:

    如果您的图片来自用户拍摄或者上传的,您需要一个input file来获取图片。

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

    接着通过change事件可以得到用户选择的图片

    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、微信什么的)

  • 相关阅读:
    利用binlog2sql闪回丢失数据
    MySQL 5.7基于GTID的主从复制
    执行SQL查询导致磁盘耗尽故障演示
    mysqld_safe之三言两语
    利用MyFlash闪回丢失数据(续)
    泛型方法的局限及解决之道
    操作系统学习笔记:文件系统实现
    动态绑定滚动条事件
    asp.net mvc + javascript导入文件内容
    asp.net mvc + javascript生成下载文件
  • 原文地址:https://www.cnblogs.com/guandekuan/p/6739190.html
Copyright © 2020-2023  润新知