关闭

压缩图片

158人阅读 评论(0) 收藏 举报
分类:
//获取get传值
function GetQueryString(name)
{
     var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
     var r = window.location.search.substr(1).match(reg);
     if(r!=null)return  unescape(r[2]); return null;
}

/将input=file里的图片对象转化成base64/
function getObjectURL(file){
	var url=null 
	if(window.createObjectURL!=undefined){ // basic
	    url=window.createObjectURL(file)
	}else if(window.URL!=undefined){ // mozilla(firefox)
		url=window.URL.createObjectURL(file)
	} else if(window.webkitURL!=undefined){ // webkit or chrome
		url=window.webkitURL.createObjectURL(file)
	}
	return url
}

$("#face_upload").change(function(){
    var objUrl=getObjectURL(this.files[0]);
    var size=this.files[0].size;
    if(size>=1024000)bottomTip("图片超过1M了哦",0);
    else{
    	 if(objUrl){
    	        $(window).scrollTop(0);
    	        $("article").hide();
    	        $("#img_screen").show();              
    	        $("#img_box").show();              
    	        $("#clipBtn").show();
    	    }
    } 
})
/将blob放入form的file里/
function convertToFile(base64Codes){
	base64Codes=compress(base64Codes,70,200,200);console.log(base64Codes);
    var form=document.forms[0];
    var formData = new FormData(form);
    var img_name=$("#face_upload").val();
    formData.append("img",convertBase64UrlToBlob(base64Codes),img_name);
    $.ajax({
        url : "XXX/XX",
        type : "POST",
        data : formData,
        dataType:"json",
        processData : false,         // 告诉jQuery不要去处理发送的数据
        contentType : false,        // 告诉jQuery不要去设置Content-Type请求头
        success:function(data){
            imgurl=data.imgs[0];
	     	subuserinfo_face(imgurl);
        }
    });
}

/*压缩图片<script src="assets/wap/kuaiqin/js/mobileBUGFix.mini.js"></script>判断手机类型,安卓,苹果,其余的操作要在img.onload里执行

js连接http://blog.csdn.net/qq_21119773/article/details/53996721,直接复制文本保存到js文件即可使用

*/


function _compress(blob,output_format){
    var img = new Image();
    img.src = blob;
    var mime_type = "image/jpeg";
    if(output_format!=undefined && output_format=="png"){
       mime_type = "image/png";
    }
    
    img.onload = function(){
        var canvas = document.createElement('canvas');
        var ctx = canvas.getContext('2d');
       
            var w = 200;
            var h = 200;
       
        $(canvas).attr({width : w, height : h});
        ctx.drawImage(this, 0, 0, w, h);
        var base64 = canvas.toDataURL(mime_type, 0.5);alert("pp0");
        //var bs=convertBase64UrlToBlob(base64);alert(bs.size+"---i---");
        //convertToFile(bs);
        if( navigator.userAgent.match(/iphone/i) ) {console.log("iphone/");
            var mpImg = new MegaPixImage(img);
            mpImg.render(canvas, { maxWidth: w, maxHeight: h, quality: 0.8 });
            base64 = canvas.toDataURL(mime_type, 0.8 );alert("pp");
        }


        // 修复android
        if( navigator.userAgent.match(/Android/i) ) {alert("pp_an");
            base64=canvas.toDataURL(mime_type, 0.8);
        }
        var bs=convertBase64UrlToBlob(base64);alert("bs");alert(bs.size+"---i---");
        convertToFile(bs);
       
    };
}

/将base64转化成blob/
function convertBase64UrlToBlob(urlData){
    var bytes=window.atob(urlData.split(',')[1]);        //去掉url的头,并转换为byte
    //处理异常,将ascii码小于0的转换为大于0
    var ab = new ArrayBuffer(bytes.length);
    var ia = new Uint8Array(ab);
    for (var i = 0; i < bytes.length; i++) {
        ia[i] = bytes.charCodeAt(i);
    }
    return new Blob( [ab] , {type : 'image/png'});
}
总结:图片大小<分辨率,即900*900*0.5的图片大小比500*500*0.8图片小
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:94176次
    • 积分:1921
    • 等级:
    • 排名:千里之外
    • 原创:100篇
    • 转载:21篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论