js file上传图片转base64并压缩

  1 /*照片1*/
  2 var scene_pics_map = {};
  3 /*照片2*/
  4 var car_chekc_pics_map = {};
  5 /* 图片预览 */
  6 function imgPreview(obj, type) {
  7     console.log(1);
  8     $.showPreloader();
  9     var file = obj.files[0];
 10 
 11     console.log(obj);
 12     console.log(file);
 13     console.log("file.size = " + file.size); // file.size 单位为byte
 14 
 15     var reader = new FileReader();
 16 
 17     // 读取文件过程方法
 18     reader.onloadstart = function(e) {
 19         console.log("开始读取....");
 20     }
 21     reader.onprogress = function(e) {
 22         console.log("正在读取中....");
 23     }
 24     reader.onabort = function(e) {
 25         console.log("中断读取....");
 26     }
 27     reader.onerror = function(e) {
 28         console.log("读取异常....");
 29     }
 30     reader.onload = function(e) {
 31         console.log("成功读取....");
 32         
 33         var img = document.getElementById("xmTanImg");
 34         img.src = e.target.result;
 35 
 36         var img_tmp = document.createElement('img');
 37         // 将文件和文件扩展名拼接
 38         img.onload = function(){
 39             /*按比例进行压缩,文件大于1m小于2m的,压缩一半;大于2m小于3m的,压缩为三分之一;以此类推*/
 40             var scale_ = Math.ceil(file.size/(1024*1024));
 41             var base64File = cutDowmImg2(img, scale_);
 42             img_tmp.src = base64File;
 43             
 44             // 或者 img.src = this.result; //e.target == this
 45             var uuid = get_uuid(0, 16);
 46 
 47             $.hidePreloader();
 48             var html_str = '';
 49             if(type=='scene'){ 59                 var tmp_ = {
 60                         'img' : img_tmp.src
 61                 }
 62                 
 63                 scene_pics_map[uuid] = tmp_;
 64                 var scene_pics = JSON.parse($('#scene_pics').val());
 65                 scene_pics.push(img_tmp.src);
 66                 $('#scene_pics').val(JSON.stringify(scene_pics));
 67                 delete tmp_;
 68             }else if(type=='carcheck') {
 69                 var typeID = $(obj).attr('typeid');
 80                 var tmp_ = {
 81                         'img' : img_tmp.src,
 82                         'inspectTypeID' : typeID
 83                 }
 84                 car_chekc_pics_map[uuid] = tmp_;
 85                 var carcheck_detail = JSON.parse($('#carcheck_detail').val());
 86                 carcheck_detail.push({PicPath:img_tmp.src,InspectTypeID:typeID});
 87                 $('#carcheck_detail').val(JSON.stringify(carcheck_detail));
 88                 delete tmp_;
 89             }else{
 90                 $.alert('falied');
 91             }
 92         }
 93     }
 94 
 95     reader.readAsDataURL(file)
 96     console.log(scene_pics_map);
 97     console.log(car_chekc_pics_map);
 98 }
 99 // 压缩图片的方法:按最小宽度压缩
100 function cutDowmImg(img, width){
101     var canvas = document.createElement("canvas");
102     $.toast('图片压缩中...'+(img.width)+' :'+width, 2000, 'took');
103     canvas.width = Math.min(img.width, width);
104     canvas.height = img.height * (width / img.width);
105     var cxt = canvas.getContext("2d");
106     cxt.drawImage(img, 0, 0, canvas.width, canvas.height);
107     return canvas.toDataURL();
108 }
109 // 压缩图片的方法:按比例压缩
110 function cutDowmImg2(img, scal){
111     var canvas = document.createElement("canvas");
112     $.toast('图片压缩中...1/'+scal, 2000, 'took');
113     canvas.width = img.width/scal;
114     canvas.height = img.height/scal;
115     var cxt = canvas.getContext("2d");
116     cxt.drawImage(img, 0, 0, canvas.width, canvas.height);
117     return canvas.toDataURL();
118 }

 

posted @ 2018-01-02 10:00  动灵  阅读(5036)  评论(0编辑  收藏  举报