js压缩上传图片并预览

时间:2025-05-15 22:08:28
$("#inputId").change(function() { var objUrl = getObjectURL(this.files[0]); if(objUrl) { //实现预览 $("#imgId").attr("src", objUrl); //上传 uploadImage(objUrl); } } getObjectURL:function(file){ var url = null ; if (!=undefined) { // basic url = (file) ; } else if (!=undefined) { // mozilla(firefox) url = (file) ; } else if (!=undefined) { // webkit or chrome url = (file) ; } return url ; }, //压缩图片 compress:function(image){ var height = ; var width = ; var canvas = ('canvas'); //height、 width 和图片实际的高、宽一致时,直接赋值canvas的宽高为上述宽高 = width; = height; var ctx = ('2d'); = '#FFF';//绘制背景色 (0, 0, , ); (image, 0, 0, , ); //0.5为压缩的质量比例,范围是0~1。 var imgBase = ("image/jpeg", 0.5); //转成Blob对象,以ajax的方式上传 var formData = new FormData(); var arr = (","); var mime = arr[0].match(/:(.*?);/)[1]; var bstr = atob(arr[1]); var n = ; var u8arr = new Uint8Array(n); while(n--){ u8arr[n] = (n); } var obj = new Blob([u8arr],{type:mime}); ("imageFiles",obj,); return formData; //这里是用了toDataURL,然后再转成了blob,直接用不知道好不好使。 }, //上传方法 uploadImage:function(objUrl){ var image = new Image(); = objUrl; = function () { var formData = new FormData(); //必须以这种方式获取,以JQuery的方式获取不到 var file = (location).files[0]; if( > 1024*1024){ //大于1M的时候压缩 formData = compress(image); }else{ ("imageFiles", file, ); } //然后可以添加你所需要一起传到后台的参数 ("paramName","paramValue"); $.ajax({ url:"url", type:"post", data:formData, //以下两行不能丢 processData: false, contentType: false, success:function(data){ ...... } error:function(data){ ...... } }) } },