* [imgToBase64 压缩图片]
* @param {[type]} file [file对象 event.target.files[0]]
* @param {[type]} maxWidth [最大宽度]
* @param {[type]} maxHeight [最大高度]
* @param {[type]} callBack [回调函数,参数为base64码]
* @return {[type]} [description]
*/
function imgToBase64(file,maxWidth,maxHeight,callBack) {
// 压缩图片需要的一些元素和对象
var reader = new FileReader(),
img = new Image();
img.onload = function(){
// 图片原始尺寸
var originWidth = this.width;
var originHeight = this.height;
// 目标尺寸
var targetWidth = originWidth, targetHeight = originHeight;
// 图片尺寸超过400x400的限制
if (originWidth > maxWidth || originHeight > maxHeight) {
if (originWidth / originHeight > maxWidth / maxHeight) {
// 更宽,按照宽度限定尺寸
targetWidth = maxWidth;
targetHeight = Math.round(maxWidth * (originHeight / originWidth));
} else {
targetHeight = maxHeight;
targetWidth = Math.round(maxHeight * (originWidth / originHeight));
}
}
// 缩放图片需要的canvas
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
// canvas对图片进行缩放
canvas.width = targetWidth;
canvas.height = targetHeight;
// 清除画布
context.clearRect(0, 0, targetWidth, targetHeight);
// 图片压缩
context.drawImage(img, 0, 0, targetWidth, targetHeight);
var base64 = canvas.toDataURL();
// console.log(canvas.toDataURL());
callBack(base64);
};
reader.onload = function(e) {
img.src = e.target.result;
};
reader.readAsDataURL(file);
}
/**
* [base64ToFileObject base64码转blob二进制,再转file对象]
* @param {[type]} base64 [base64码]
* @return {[type]} newFile[返回新的file对象]
*/
function base64ToFileObject(base64) {
base64=base64.split(',')[1];
base64=window.atob(base64);
var ia = new Uint8Array(base64.length);
for (var i = 0; i < base64.length; i++) {
ia[i] = base64.charCodeAt(i);
};
var blob=new Blob([ia], {type:"image/png"});
var newFile = new File([blob],"abc.png");
return newFile;
}
//身份证正面
$("#inputfile1").change(function (e) {
var file = e.target.files[0];
var fileSize = ($('#inputfile1')[0].files[0].size/1024/1024).toFixed(4);
console.log('oldSize: '+fileSize+' M');
if (file.type.indexOf("image") == 0) {
imgToBase64(file,400,400,function(base64){
$("#up_img1").attr('src', base64);
//创建FormData对象
var data = new FormData();
var newFile = base64ToFileObject(base64);
console.log('newSize: '+(newFile.size/1024/1024).toFixed(4)+' M');
//为FormData对象添加数据
data.append('upload_file1', newFile);
// 发送数据
$.ajax({
url: '/Home/Upload/image',
type: 'POST',
data: data,
cache: false,
contentType: false, //不可缺参数
processData: false, //不可缺参数
success: function (data) {
if (data) {
if(data.status==0){
layer.msg(data.info, {icon: 2});
$(".loading").hide(); //加载失败移除加载图片
}else{
$('#img1').val(data);
$('#up_img1').show();
checkall();
}
}
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(errorThrown);
alert('上传出错');
$(".loading").hide(); //加载失败移除加载图片
}
});
});
}
});