复制 粘贴 改吧改吧就可用,原生js

  1. var fileObj = file.file;//原文件 file是我用vue-vant里的组件,里边有file(原文件)和content(base64) 其它写法自行百度,都是可以拿到原文件的
  2. if(fileObj && fileObj.size && fileObj.size > 1024*1024){//判断是否大于1MB
  3.   let cal = 1024*1024/fileObj.size; //计算比例,也可以自己定义比例 0.5等等
  4.   let reader = new FileReader();
  5. reader.readAsDataURL(fileObj);
  6. reader.onload = function(e) {
  7. let image = new Image(); //新建一个img标签(不嵌入DOM节点,仅做canvas操作)
  8. image.src = file.content; //file是我用vant里的组件,里有转好的base64格式content
  9. image.onload = function() { //图片加载完毕后再通过canvas压缩图片,否则图片还没加载完就压缩,结果图片是全黑的
  10. let canvas = document.createElement('canvas'), //创建一个canvas元素
  11. context = canvas.getContext('2d'), //context相当于画笔,里面有各种可以进行绘图的API
  12. imageWidth = image.width*cal, //压缩后图片的宽度
  13. imageHeight = image.height*cal, //压缩后图片的高度
  14. dataImg = '' //存储压缩后的图片 这个我想删除,但我页面上报警告了,下来我再看看,不影响压缩动作
  15. canvas.width = imageWidth //设置绘图的宽度
  16. canvas.height = imageHeight //设置绘图的高度
  17. //使用drawImage重新设置img标签中的图片大小,实现压缩。drawImage方法的参数可以自行查阅W3C
  18. context.drawImage(image, 0, 0, imageWidth, imageHeight)
  19. //使用toDataURL将canvas上的图片转换为base64格式
  20. fileObj = canvas.toDataURL('image/jpeg')
  21. console.log(fileObj'这是转化成的base64格式,也可进行upload-ajax上传请求');
  22. }
  23. }
  24. }
  25. let formData = new Formata();
  26. formData.append('file', fileObj) //写自己的对应的参数名称
  27. //请求ajax进行上传
  28. ajax...............

JS 上传图片压缩,原比例压缩的更多相关文章

  1. js 上传图片、压缩、旋转

    亲测 <!doctype html> <html> <head> <meta charset="utf-8"> <title& ...

  2. java上传并压缩图片(等比例压缩或者原尺寸压缩)

    本文转载自http://www.voidcn.com/article/p-npjxrbxr-kd.html 先看效果: 原图:1.33M 处理后:27.4kb 关键代码; package codeGe ...

  3. 处理页面载入图片js(等比例压缩图片)

    第一页面html  <div class="admin">${answer.content}</div> <div class="admin ...

  4. Java实现的上传并压缩图片功能【可等比例压缩或原尺寸压缩】

    本文实例讲述了Java实现的上传并压缩图片功能.分享给大家供大家参考,具体如下: 先看效果: 原图:1.33M 处理后:27.4kb 关键代码: package codeGenerate.util; ...

  5. Android webview实现上传图片的效果(图片压缩)

    mainactivity代码 package com.bwie.webviewupload; import java.io.ByteArrayInputStream; import java.io.B ...

  6. js图片转base64并压缩

    /* 2015-09-28 上传图片*/ function convertImgToBase64(url, callback, outputFormat){ var canvas = document ...

  7. 也谈谈js的压缩,jquery压缩。【转】

    问题缘由: 负责公司的开发平台研发工作,考虑的知识产权的保护工作,必须要考虑java的加密技术和js脚本的加密技术.在目前java加密很容易破解的情况下,还是先搞定js的加密和压缩,一方面可以提高页面 ...

  8. 等比例压缩图片到指定的KB大小

    基本原理: 取原来的图片,长宽乘以比例,重新生成一张图片,获取这张图片的大小,如果还是超过预期大小,继续在此基础上乘以压缩比例,生成图片,直到达到预期 /** * @获取远程图片的体积大小 单位byt ...

  9. iis7 压缩js文件和启用gzip压缩

    压缩js文件 打开IIS 7的配置文件:c:\windows\system32\inetsrv\config\applicationhost.config 在<staticContent loc ...

随机推荐

  1. 磁盘分区(1):fdisk和parted

    一.Linux存储管理 关于Linux硬盘的识别: (1)如果是IDE设备,在计算机中将被识别为hd,第一个IDE设备会被识别为hda,第二个IDE设备会被识别为hdb,依此类推. (2)如果是SAT ...

  2. js的变量(01)

    变量的声明用的修饰符 var ,let ,const var是普通变量      var   变量名  = 变量值         可以重复定义可以多次修改 let是es6新加的语法   let 变量 ...

  3. 使用git pull同步github代码到服务器

    我直接用git pull的时候遇到这个错误: error: Your local changes to the following files would be overwritten by merg ...

  4. 解决Cannot download "https://github.com/sass/node-sass/releases/download/binding.nod的问题

    npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/

  5. webpack 打包增加版本信息

    What do we need? 笔者目的是在vue项目打包后的 dist/index.html 文件中写入本次打包git用户.最后一次git提交信息,这样做的目的是便于线上项目的管理和防止同事之间的 ...

  6. C语言随笔5:函数、函数指针

    函数 C语言中函数参数传递时,将实参的值拷贝到函数参数的存储区中.这种传递参数的方式称为按值传递. 函数不会访问实参本身,访问的是函数存储在栈区的副本,不会改变实参.函数凋用结束,函数在栈区的内容释放 ...

  7. Multisim 如何添加文本 如何编辑文本字体

    1.在Multisim中如何添加文本 方法1)Place -> Text 方法2)Ctrl+T 2.如何修改字体的大小及颜色

  8. bugku 好多压缩包

    https://www.cnblogs.com/WangAoBo/p/6951160.html

  9. Django模板结构优化{% include %}和{% extend %}标签

    https://blog.csdn.net/xujin0/article/details/83420633

  10. 【REST详述及RESTful规范】

    目录 Web服务交互 理解REST 什么是资源? 什么是URI.URL? 统一资源接口 资源的表述 状态转移 小结 "RESTful是一种软件的架构风格.设计风格,为客户端和服务端的交互提供 ...