input file 上传图片及压缩

大致需求为:可上传图片,同时压缩图片大小(因为手机图片一般都会有几兆,原图上传会耗损过多资源);并且可以上传之后显示出来 ,再提交给服务器;

<input    id="shangchuanimg" title=""   type="file" name="file" value="" onChange="showImage(this)" />
<ul class="ul"> 上传之后的图片矩阵 </div>

压缩的思路是创建一个图片,将file等于这个图片,然后创建一个canvas图层 ,将canvas等比例缩放,然后用canvas的drawImage将图片与canvas合起来,然后在转成吧canvas的base64转成file即可

function showImage(file, id) {if (file.files && file.files[0]) {for (let i = 0; i < file.files.length; i++) {console.log(file.files[i]) //拿到file对象let reader = new FileReader(); //读取filereader.readAsDataURL(file.files[i]);reader.onloadend = function(e) {let image = new Image() //新建一个img标签(还没嵌入DOM节点)image.src = e.target.result //将图片的路径设成file路径image.onload = function() { //压缩的思路是创建一个图片,将file等于这个图片,然后创建一个canvas图层 ,将canvas等比例缩放,然后用canvas的drawImage将图片与canvas合起来,然后在转成吧canvas的base64转成file即可let canvas = document.createElement('canvas'), context = canvas.getContext('2d'),imageWidth = image.width / 10,    //压缩后图片的大小imageHeight = image.height / 10,data = ''canvas.width = imageWidthcanvas.height = imageHeightcontext.drawImage(image, 0, 0, imageWidth, imageHeight)data = canvas.toDataURL('image/jpeg')console.log(dataURLtoFile(data,'a'+imgnum))//压缩完成 var newfile = dataURLtoFile(data,'a'+imgnum+'.png');var formFile = new FormData();formFile.append('files', newfile );//ajax()....ajax上传file}//上传之后预览小图$('.pz').before('<li class="fileimg isfile dis" num=' + first + '>' +'<img src=' + reader.result + ' alt="">' +'<span class="isclick"></span>' +'</li>')$('.ok').text('上传(' + imgnum + ')')}}}
}function dataURLtoFile(dataurl, filename) { // base64转file对象var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);while(n--){u8arr[n] = bstr.charCodeAt(n);}return new File([u8arr], filename, {type:mime});}

input file 上传图片及压缩相关推荐

  1. input file上传图片预览

    下载地址http://download.csdn.net/detail/cometwo/9383602 兄弟文章:http://blog.csdn.net/libin_1/article/detail ...

  2. JQuery input file 上传图片

    表单元素file设置隐藏,通过其他元素打开: .imgfile为input file $(".ul").click(function () {return $(".img ...

  3. 解决input file上传图片,部分手机拍照或者本地图片无法上传(图片太大,需要上传之前先压缩)

    现在一般手机拍的照片都好几兆,图片文件太大会非常影响上传速度或者根本上传不上去,故上传图片前需要先进行压缩,这里使用的是lrz.js(lrz.js文件这里就不提供了) <input type=& ...

  4. input file 上传图片判断图片的宽高尺寸

    最近的项目中有需要限制上传图片的尺寸: <form id="uploadForm"><input type="file" id="f ...

  5. vue input file 上传图片

    原始图 父组件: <div class="my-basic"><my-basic :items="category[3].menu[0]"@u ...

  6. input file 上传图片时,文件格式限制

    在input加入accept属性即可限制,上传的图片类型 例如: <input type="file" name="" accept="imag ...

  7. 微擎php5.6无法上传图片,解决PHP5.6版本“No input file specified”的问题

    问题描述:使用TP框架做项目时,在启用REWRITE的伪静态功能的时候,首页可以访问,但是访问其它页面的时候,就提示:"No input file specified." 原因在于 ...

  8. js/jq input file获取本地文件路径 将要上传图片显示到页面

    <div class="ge_pic_icon_Infor"><img src="images/moren.jpg"/> </di ...

  9. php 手机网站上传文件,HTML5的 input:file上传类型控制,html5手机上传图片调用API。...

    调用摄像.视频 调用语音 调用相机 调用相机 图片或者相册 一.input:file属性 属性值有以下几个比较常用: accept:表示可以选择的文件MIME类型,多个MIME类型用英文逗号分开,常用 ...

最新文章

  1. 360金融首席科学家张家兴:我们如何做数据AI融合中台?
  2. 编程面试中的十个常见错误
  3. Linux 新api eventfd(转)
  4. 《大数据》2015年第3期“网络大数据专题”——基于特征学习的文本大数据内容理解及其发展趋势...
  5. 诗与远方:无题(二十九)
  6. linux逻辑或的用法,第三课 Linux逻辑运算符
  7. CSS3中3D综合应用及分析
  8. 谈谈我的跳槽感想,从日资企业到互联网的转变
  9. 直播 3.0 时代,在线教育行业的裂变和重构
  10. 打造高效的运维日志收集与分析平台
  11. ubuntu20.04 LTS安装谷歌拼音输入法
  12. Python爬虫:抖音无水印解析,和程序员斗智斗勇的一天
  13. 复杂性思维中文第二版 十二、合作进化
  14. 详解 Redis 中布隆过滤器解决缓存穿透问题
  15. 纯干货分享:LoRa物联网各行业应用案例
  16. 如何使用微信开发者工具调试在微信端访问的网页
  17. 从软件工程师到IT猎头:我的一点经…
  18. 进博抢先看 | 辉瑞、默沙东、强生、GSK、西门子医疗、蔡司、霍尼韦尔、江森自控、阿迪达斯、迪卡侬、乐高等将亮相第五届进博会...
  19. SM2RAIN-ASCAT全球规模降雨产品数据集(2007年-2020年6月)
  20. Ngnix 的代码分析

热门文章

  1. 基于GPT模型的对话系统
  2. hadoop和spark安装包 网盘地址
  3. Android 适配Dark Theme(暗黑模式),看完跪了
  4. JAVA网络编程、正则表达式
  5. 高通平台camera客观项测试之色彩偏差白平衡饱和度
  6. vue双向绑定原理及实现
  7. LSSVM分类和回归
  8. 建筑央企工程项目数字化管理整体解决方案
  9. Linux 磁盘管理-配额管理-配置用户对磁盘进行指定大小或者文件数量的使用权限
  10. 最优化学习 最速下降法(steepest Descent)