JS 上传图片压缩,原比例压缩
复制 粘贴 改吧改吧就可用,原生js
- var fileObj = file.file;//原文件 file是我用vue-vant里的组件,里边有file(原文件)和content(base64) 其它写法自行百度,都是可以拿到原文件的
- if(fileObj && fileObj.size && fileObj.size > 1024*1024){//判断是否大于1MB
- let cal = 1024*1024/fileObj.size; //计算比例,也可以自己定义比例 0.5等等
- let reader = new FileReader();
- reader.readAsDataURL(fileObj);
- reader.onload = function(e) {
- let image = new Image(); //新建一个img标签(不嵌入DOM节点,仅做canvas操作)
- image.src = file.content; //file是我用vant里的组件,里有转好的base64格式content
- image.onload = function() { //图片加载完毕后再通过canvas压缩图片,否则图片还没加载完就压缩,结果图片是全黑的
- let canvas = document.createElement('canvas'), //创建一个canvas元素
- context = canvas.getContext('2d'), //context相当于画笔,里面有各种可以进行绘图的API
- imageWidth = image.width*cal, //压缩后图片的宽度
- imageHeight = image.height*cal, //压缩后图片的高度
- dataImg = '' //存储压缩后的图片 这个我想删除,但我页面上报警告了,下来我再看看,不影响压缩动作
- canvas.width = imageWidth //设置绘图的宽度
- canvas.height = imageHeight //设置绘图的高度
- //使用drawImage重新设置img标签中的图片大小,实现压缩。drawImage方法的参数可以自行查阅W3C
- context.drawImage(image, 0, 0, imageWidth, imageHeight)
- //使用toDataURL将canvas上的图片转换为base64格式
- fileObj = canvas.toDataURL('image/jpeg')
- console.log(fileObj,'这是转化成的base64格式,也可进行upload-ajax上传请求');
- }
- }
- }
- let formData = new Formata();
- formData.append('file', fileObj) //写自己的对应的参数名称
- //请求ajax进行上传
- ajax...............
JS 上传图片压缩,原比例压缩的更多相关文章
- js 上传图片、压缩、旋转
亲测 <!doctype html> <html> <head> <meta charset="utf-8"> <title& ...
- java上传并压缩图片(等比例压缩或者原尺寸压缩)
本文转载自http://www.voidcn.com/article/p-npjxrbxr-kd.html 先看效果: 原图:1.33M 处理后:27.4kb 关键代码; package codeGe ...
- 处理页面载入图片js(等比例压缩图片)
第一页面html <div class="admin">${answer.content}</div> <div class="admin ...
- Java实现的上传并压缩图片功能【可等比例压缩或原尺寸压缩】
本文实例讲述了Java实现的上传并压缩图片功能.分享给大家供大家参考,具体如下: 先看效果: 原图:1.33M 处理后:27.4kb 关键代码: package codeGenerate.util; ...
- Android webview实现上传图片的效果(图片压缩)
mainactivity代码 package com.bwie.webviewupload; import java.io.ByteArrayInputStream; import java.io.B ...
- js图片转base64并压缩
/* 2015-09-28 上传图片*/ function convertImgToBase64(url, callback, outputFormat){ var canvas = document ...
- 也谈谈js的压缩,jquery压缩。【转】
问题缘由: 负责公司的开发平台研发工作,考虑的知识产权的保护工作,必须要考虑java的加密技术和js脚本的加密技术.在目前java加密很容易破解的情况下,还是先搞定js的加密和压缩,一方面可以提高页面 ...
- 等比例压缩图片到指定的KB大小
基本原理: 取原来的图片,长宽乘以比例,重新生成一张图片,获取这张图片的大小,如果还是超过预期大小,继续在此基础上乘以压缩比例,生成图片,直到达到预期 /** * @获取远程图片的体积大小 单位byt ...
- iis7 压缩js文件和启用gzip压缩
压缩js文件 打开IIS 7的配置文件:c:\windows\system32\inetsrv\config\applicationhost.config 在<staticContent loc ...
随机推荐
- 磁盘分区(1):fdisk和parted
一.Linux存储管理 关于Linux硬盘的识别: (1)如果是IDE设备,在计算机中将被识别为hd,第一个IDE设备会被识别为hda,第二个IDE设备会被识别为hdb,依此类推. (2)如果是SAT ...
- js的变量(01)
变量的声明用的修饰符 var ,let ,const var是普通变量 var 变量名 = 变量值 可以重复定义可以多次修改 let是es6新加的语法 let 变量 ...
- 使用git pull同步github代码到服务器
我直接用git pull的时候遇到这个错误: error: Your local changes to the following files would be overwritten by merg ...
- 解决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/
- webpack 打包增加版本信息
What do we need? 笔者目的是在vue项目打包后的 dist/index.html 文件中写入本次打包git用户.最后一次git提交信息,这样做的目的是便于线上项目的管理和防止同事之间的 ...
- C语言随笔5:函数、函数指针
函数 C语言中函数参数传递时,将实参的值拷贝到函数参数的存储区中.这种传递参数的方式称为按值传递. 函数不会访问实参本身,访问的是函数存储在栈区的副本,不会改变实参.函数凋用结束,函数在栈区的内容释放 ...
- Multisim 如何添加文本 如何编辑文本字体
1.在Multisim中如何添加文本 方法1)Place -> Text 方法2)Ctrl+T 2.如何修改字体的大小及颜色
- bugku 好多压缩包
https://www.cnblogs.com/WangAoBo/p/6951160.html
- Django模板结构优化{% include %}和{% extend %}标签
https://blog.csdn.net/xujin0/article/details/83420633
- 【REST详述及RESTful规范】
目录 Web服务交互 理解REST 什么是资源? 什么是URI.URL? 统一资源接口 资源的表述 状态转移 小结 "RESTful是一种软件的架构风格.设计风格,为客户端和服务端的交互提供 ...