js实现图片压缩上传

2023-11-03

javascript 处理图片压缩、剪切、模糊和上传

最近在研究H5前端图片处理相关技术,方向有图片压缩、裁切、旋转、模糊等,现在已经整理成对应的demo,上传至github。

一:js脚本实现图片压缩 - CompressImageUtiles

特点:

1 体积小,4kb;

2 支持blob格式上传和base64格式上传

原图 5.4MB                                                                                                           

压缩前图片

 压缩后136KB

压缩后

               

用法:

// html
<input type="file" id="input-img">

//引入脚本
<script src="./CompressImageUtiles.js"></script>


<script>
/**
 * 支持blob格式上传和base64格式上传
 * */ 
    let inputDom = document.querySelector('#input-img')
    inputDom.onchange = function(){
        const fileObj = inputDom.files[0];
        _compressAndUploadFile(fileObj);
    }
    function _compressAndUploadFile(file){
        compressImage(file).then(resultObj => {
            let {canvas,blob,base64,fileName,oSize} = resultObj
            if (blob.size > oSize){
                that._uploadFile(file, fileName);
            } else {
            //压缩后比原来小,上传压缩后的
                _uploadFile(blob, fileName)
            }
            // 下载
            downloadImgFromBlob(blob,fileName)
        })
    }
    //上传
    function _uploadFile(file){
        let params = new FormData();
        params.append("file", file);
    }

demo地址:https://github.com/zhangfeng001/compressUtls-demo

ssh:git@github.com:zhangfeng001/compressUtls-demo.git

二:jq插件 实现图片剪切、旋转  - imagecropper

特点:1、炫酷的展现效果,可以完美的应用到项目中,如头像上传前选择区域等

           2、输出多种数据格式,直接浏览器打开HTML查看效果

效果预览:

用法介绍:

1、下载demo 在main.js中看到如下方法,

if (data.method === 'getCroppedCanvas') {
    $('#getCroppedCanvasModal').modal().find('.modal-body').html(result.canvas);
    console.log(result)
}

2、在此方法中可以查看log,拿到多种图片数据类型 有canvas 、base54、blob,选择一种上传即可

demo地址:https://github.com/zhangfeng001/cropper-demo

ssh:git@github.com:zhangfeng001/cropper-demo.git

三:CSS3和canvas实现图片模糊处理 blurify.js

特点:体积小,实现更方便,

效果展示

用法介绍:超级简单

 <div class="blurify-container">
      <img src="./test/miao.jpg" class="img">
      <img data-src="./test/miao.jpg" class="blurify">
      <img src="./test/wang.jpg" class="img">
      <img data-src="./test/wang.jpg" class="blurify">
 </div>
 <script src="dist/blurify.js"></script>
 <script>
        (function () {
            blurify({
                images: document.querySelectorAll('.blurify'),
                blur: 2,     //值为length px
                mode: 'auto', // auto css
            });
        })();
 </script>

demo地址:https://github.com/zhangfeng001/blurify-demo

SSH:git@github.com:zhangfeng001/blurify-demo.git

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js实现图片压缩上传 的相关文章

  • php-event 文档,@event

    event 描述 描述一个事件 语法 event event 概述 描述一个事件 event标签允许您描述一个可触发的事件 一个典型的事件是由对象定义的一组属性来表示 标签来定义事件的具体类型 您可以使用 fires标记 以表明这个种方法可
  • mysql isamchk_MySQL之myisamchk

    Description check and repair of MyISAM tables Used without options all tables on the command will be checked for errors
  • Microsemi 2017 Q2 招聘

    有意者发送简历到 dong zhang microsemi com Position Staff ASIC Design Engineer Business Unit ESC PerformanceStorage Location Shan
  • ajax循环输出,Ajax轮询 select循环输出

    弹出层 del color red addname color 337ab7 款项名目操作 vo name 删除 添加 addname on click function layer prompt title 添加款项名目 formType
  • 半导体学习——三极管正确理解

    学习三极管时候的问题 1 能量不是守恒的吗 为什么三极管会有放大电路的效果 2 既然是PNP型或者是NPN型 那么总有一个PN结是反向偏置的 那么电流是如何通过这个反向偏置的PN结到达集电极的呢 1 三极管的 放大 并不是把小电流变成大电流
  • paramiko.ssh_exception.SSHException: EOF during negotiation

    查找sftp server的位置 sudo find name sftp server usr lib openssh sftp server 然后查看ssh的配置文件 sudo vim etc ssh sshd config 找到配置文件
  • Java8 stream 对List<Map<String,Object>> 去重、过滤、排序等操作

    1 去重 List
  • 业务敏捷与SOA

    Web2 0催生广泛的蝴蝶效应 亚洲蝴蝶拍拍翅膀 将使美洲几个月后出现比狂风还厉害的龙卷风 蝴蝶效应触发了六十年代对混沌理论的广泛关注 过去十几年 由圣菲研究所发起的复杂性理 论的研究也在对传统经济学发起挑战 有位经济学家还专门写了本 蝴蝶
  • 找不到msvcp120dll,无法继续执行代码,怎么解决?

    当msvcp120 dll文件丢失或找不到时 会导致无法运行使用C 编写的程序 这可能是由于以下原因导致的 1 删除或移动文件 如果你不小心删除了或移动了msvcp120 dll文件 你将无法找到它并加载它 从而导致程序无法正常运行 2 文
  • 使用docker编排容器

    使用Dockerfile构建一个自定义的nginx 首先用docker拉一个nginx镜像 docker pull nginx 拉取完成后 编辑一个Dockerfile文件 vim Dockerfile 命令如下所示 FROM 后面跟的你的
  • Python---copy()、deepcopy()与赋值的区别

    copy 与deepcopy 之间的主要区别是python对数据的存储方式 首先直接上结论 深复制 即将被复制对象完全再复制一遍作为独立的新个体单独存在 所以改变原有被复制对象不会对已经复制出来的新对象产生影响 而等于赋值 并不会产生一个独
  • jmeter的安装与配置环境变量_win7系统

    一 jmeter篇 1 安装JDK ps JMeter是纯java应用程序 需要配置Java环境才能正常运行 JVM1 8或者更高版本 注 JMeter3 2版本 要求jdk1 8及以上 官网 https www oracle com te
  • linux rar解压命令

    一 简介 解压缩是一个常用的操作 在 Linux 中通常比较常用的是 tar 命令 zip 和 rar 命令则是 Windows 中比较常用 二 快速使用 1 tar 命令 语法 tar 主选项 辅选项 文件或目录 示例 压缩文件 file

随机推荐

  • 树莓派静态库和动态库的生成和使用

    静态库 编译时就加入库文件 运行快 但是更新版本操作较麻烦 动态库 程序运行时动态加载的库文件 供给调用程序使用 只调用一次 多个程序可使用 节省内存 因为APP里面没有库文件源码 升级时只要库的名字不变 函数名和参数不变 只是实现做了优化
  • SQL Server数据类型

    最小单位是bit 位 一个字节是8位 一般一个中文字符占据2字节 英文字符占据1个字节 var开头的会把尾部不足的部分去掉 不带var的会补上 n开头的存储一个字符占2个字节 采用Unicode字符集 tinyint 1个字节 8位 范围0
  • 网络安全这条路怎么走?应该学些什么?

    我之前就写过一篇文章专门解答了这个问题 但是还是有很多小伙伴并不清楚这条路该怎么走下去 不同于Java C C 等后端开发岗位有非常明晰的学习路线 网路安全更多是靠自己摸索 要学的东西又杂又多 难成体系 网络安全虽然是计算机众多方向中的一支
  • 一文带你了解如何编写测试用例?【0基础也能看懂】

    我是小濠 一个快要秃头的测试人 欢迎点赞 收藏 留言 如有错误敬请指正 我收集了一些软件测试资料 关注我公众号 程序员小濠 免费领取 送给大家一句话 世界的美丽 来源于你的努力 因此 在介绍如何编写测试用例之前 先看一个软件系统登录功能的测
  • 查看WIN10密钥备忘

    查看WIN10密钥备忘 1 我们按下 Win R 打开运行或者开始菜单右键选择运行 输入 regedit 点击确定打开注册表编辑器 2 依次展开 HKEY LOCAL MACHINE SOFTWARE Microsoft Windows N
  • 【Android -- 相机】调用摄像头拍照 & 选择照片

    效果图 现在很多应用中都会要求用户上传一张图片来作为头像 首先我在这接收使用相机拍照和在相册中选择图片 接下来先上效果图 实现代码 1 布局文件
  • Android OpenGL ES 3.0 开发 :3D实例化(Instancing 3D)

    1 OpenGL ES 实例化 Instancing OpenGL ES 实例化 Instancing 是一种只调用一次渲染函数就能绘制出很多物体的技术 可以实现将数据一次性发送给 GPU 告诉 OpenGL ES 使用一个绘制函数 将这些
  • Leetcode 82. Remove Duplicates from Sorted List II

    题目描述 Given a sorted linked list delete all nodes that have duplicate numbers leaving only distinct numbers from the orig
  • 数据库设计步骤(超级详细)

    数据库设计 我们先来看这样一个问题 假如遇到下面这样的设计需求 我们如何完成数据库的设计呢 设计需求 假设商品经销商有基本实体集 供应商Vendors 产品目录Products 顾客信息Customers和顾客订单Orders 各个实体的属
  • java.lang.object 下载_Java总结篇系列:java.lang.Object

    从本篇开始 将对Java中各知识点进行一次具体总结 以便对以往的Java知识进行一次回顾 同时在总结的过程中加深对Java的理解 Java作为一个庞大的知识体系 涉及到的知识点繁多 本文将从Java中最基本的类java lang Objec
  • QT-信号和槽函数

    信号和槽函数 signals slots Qt5作为c 的GUI开发类库 其最具代表性的特点就是信号和槽 类似于中断和中断处理函数调用的回调 callback 函数 但具体实现在应用层 并且使用起来较后者更为方便 作用 用于对象间的通信 实
  • 计算机网络学习—iptables的SNAT和DNAT

    iptables的SNAT和DNAT iptables SNAT SNAT策略概述 SNAT策略的典型应用环境 局域网主机共享单个公网IP地址接入internet SNAT策略的原理 源地址转换 Source Network Address
  • [前端系列第3弹]JS入门教程:从零开始学习JavaScript

    本文将带领大家 从零开始学习JavaScript fighting 目录 一 JavaScript简介 二 变量和数据类型 三 注释和分号 四 算术运算符 五 表达式和语句 六 代码块和作用域 七 函数 最重要 一 JavaScript简介
  • ES索引的备份与恢复

    ES索引的备份与恢复 1 索引的备份与恢复 步骤首先是进行创建备份仓库这里选择如下 usr local backup 在es的yml下进行添加配置 path repo usr local backup 然后在kibana中执行 PUT sn
  • 战略方法论

    父文章 人人都是战略家 2018年注册会计师公司战略与风险考点 swot分析 知识点 注册会计师 SWOT分析 一 基本原理 所谓SWOT分析 即基于内外部竞争环境和竞争条件下的态势分析 就是将与研究对象密切相关的各种主要内部优势 劣势和外
  • BRDF

    一 BRDF简介 BRDF表示的是双向反射分布函数 Bidirectional Reflectance Distribution Function 它描述了光线如何在物体表面进行反射 可以用来描述材质属性 BRDF的输入参数是入射光的的仰角
  • CSRF漏洞原理/防御

    CSRF 跨站请求伪造 原理 CSRF是指攻击者利用已登录的用户身份 伪造用户请求 从而执行非法操作 触发点 检测 CSRF常出现在留言 论坛 后台管理 用户中心等功能 CSRF有三个前提 第一 目标用户处于登录状态 第二 后端代码逻辑不严
  • 在matlab中计算距离矩阵

    matlab中自带的计算距离矩阵的函数有两个pdist和pdist2 前者计算一个向量自身的距离矩阵 后者计算两个向量之间的距离矩阵 基本调用形式如下 D pdist X D pdist2 X Y 这两个函数都提供多种距离度量形式 非常方便
  • html之select标签

    基本用法
  • js实现图片压缩上传

    javascript 处理图片压缩 剪切 模糊和上传 最近在研究H5前端图片处理相关技术 方向有图片压缩 裁切 旋转 模糊等 现在已经整理成对应的demo 上传至github 一 js脚本实现图片压缩 CompressImageUtiles