html5上传及压缩图像
来源:互联网 发布:用友软件软件财务软件 编辑:程序博客网 时间:2024/06/05 05:21
下述插件jquery.upLoadImg.js旨在不借助任何插件的前提下,优化移动端用户在web页面上传图片卡顿或消耗流量过大问题。大概思路,先用FileReader对象从本地获取上传图像,转为base64图片流,再由此生成Image对象,用canvas按比例压缩绘制,并返回压缩后的图片流,上送给后台服务器
HTML:(html是次要的,自由发挥吧)
<img id="showImg" src="默认背景图片" alt="" /><input type="file" id="file" onchange="readAsDataURL('file','showImg')" />jquery.upLoadImg.js:
/** * upLoadImg (http://blog.csdn.net/u598975767/article/details/75500890) * 基于jquery+html5 上传及压缩图片 * @version v0.1 * @author benboerba */;(function($){var imgFiles=function(el,opt){this.element=el;this.file=el[0].files[0];this.default={"showImage":"",//需要展示的img标签Id"width":375,//目标图片宽度,为保证图片不失真或变形,高度会等比例变化"quality":0.8,//图片质量,取值0-1之间"callBack":function(){}};this.options=$.extend({},this.default,opt);};/** * 压缩图片 创建一个image对象,给canvas绘制使用 * @params image:图片对象 * @return 返回一个上送给后台的图片流 */imgFiles.prototype.compress=function(image){var cvs = document.createElement('canvas'); //根据设备宽度高,设定缩放后的宽度,计算出缩放比例,建议以宽度为准 var scale = this.options.width / image.width; //计算等比缩小后图片宽高 cvs.width = image.width*scale; cvs.height = image.height*scale; var ctx = cvs.getContext('2d'); ctx.drawImage(image, 0, 0, cvs.width, cvs.height); var newImageData = cvs.toDataURL(this.file.type,this.options.quality); var sendData = newImageData.replace("data:"+this.file.type+";base64,",''); return sendData;};/** * 上传图片 */imgFiles.prototype.getImages=function(){var $that=this;var files = $that.file; //检验是否为图像文件 if(!/image\/\w+/.test(files.type)){ alert("请选择图片"); $that.element.val(""); return false; } var reader = new FileReader(); //将文件以Data URL形式读入页面 reader.readAsDataURL(files); reader.onload=function(e){ var result = this.result; if($("#"+$that.options.showImage)){ $("#"+$that.options.showImage).attr({"src": result}); } var image = new Image(); image.src = result; image.onload = function(){ $that.options.callBack($that.compress(image)); }; }; };$.fn.upLoadImg=function(options){var img= new imgFiles(this, options);img.getImages();};})(jQuery);
调用js:
<script type="text/javascript"> var readAsDataURL=function(file,showId){ $("#"+file).upLoadImg({ "showImage":showId, "width":375, "callBack":function(imgStream){ var params = {"***" : imgStream}; $.ajax({ url: "test.html", data:JSON.stringify(params), success: function(data){ alert("图片上传成功啦"); } }); } }); };</script>上述代码基于jquery,别忘了导入jquery框架!第一次封装插件,有不到的地方,望大牛指出纠正!谢谢!
阅读全文
1 0
- html5上传及压缩图像
- HTML5笔记四:文件及图像上传
- html5 压缩图片上传
- html5压缩图片并上传
- html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器
- 上传图片图像进行压缩后上传
- HTML5实现图片压缩上传功能
- html5+canvas实现图片的压缩上传
- html5调用手机相机并压缩、上传
- html5上传前压缩图片尺寸、质量
- html5调用手机相机并压缩、上传
- Html5调用手机相机并压缩、上传
- 深入研究HTML5实现图片压缩上传
- HTML5实现图片压缩上传功能
- 数学形态学及图像压缩
- 图像类型转换及图像压缩
- Android 图像缩略图及压缩图像
- 图像类型转换及图像压缩
- 加载驱动链接数据库执行SQL语句
- Eureka的高可用(Eureka集群)
- org.elasticsearch.transport.ReceiveTimeoutTransportException:
- Problem 2271 X (flyod变形)
- 海量文件上传存储解决方案
- html5上传及压缩图像
- C语言将数字转成大写中文数字
- HTML foreach循环
- c语言如何操作内存(数据类型、函数在内存中解析简介)
- Mac下IDEA的使用之常用快捷键篇
- 20170720
- CodeForces 85 D.Sum of Medians(线段树)
- [转载]Android中asset文件夹和raw文件夹区别
- MongoDB数据库基础操作