//获取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.youkuaiyun.com/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图片小