压缩图片

来源:互联网 发布:蚁群算法 c语言 编辑:程序博客网 时间:2024/06/01 23:57
//获取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 chromeurl=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
原创粉丝点击