<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>压缩图片</title>
<script type="text/javascript" src="js/jquery-1.12.1.min.js" ></script>
</head>
<body>
<div id="">
<label>请选择图片:</label>
<input type="file" name="" id="myfile" value="" />
<button type="button" οnclick="YaSuo()">确定</button>
</div>
<div id="">
<img id="showImg" src="" width="200px;">
</div>
<div id="">
<img id="showImg2" src="" >
</div>
<script>
function uploadFun(obj){
var file = $(obj).filters[0];
$("#showImg").attr("src",file);
}
$(function(){
$("#myfile").change(function(){
var file = $(this).get(0).files[0];
//创建用来读取此文件的对象
var reader = new FileReader();
//使用该对象读取file文件
reader.readAsDataURL(file);
//读取文件成功后执行的方法函数
reader.οnlοad=function(e){
//读取成功后返回的一个参数e,整个的一个进度事件
console.log(e);
//选择所要显示图片的img,要赋值给img的src就是e中target下result里面
//的base64编码格式的地址
$('#showImg').get(0).src = e.target.result;
}
})
});
var quality = 0.6; // 画质,取值范围0-1
var maxWidth = 1080; // 最大像素宽度
function YaSuo() {
console.log(11)
var fileObj = $("#myfile").get(0).files[0];
console.log('文件大小:' + fileObj.size);
var reader = new FileReader();
reader.readAsDataURL(fileObj);
reader.onload = function() {
var fileName = $("#myfile").val();
var suffix = fileName.substr(fileName.lastIndexOf("."));
var img = new Image();
img.src = this.result;
img.onload = function() {
// 按比例缩放
var w = this.width < maxWidth ? this.width : maxWidth;
var h = this.width < maxWidth ? this.height : this.height / (this.width / maxWidth);
var wNode = document.createAttribute('width');
var hNode = document.createAttribute('height');
wNode.nodeValue = w;
hNode.nodeValue = h;
var canvas = document.createElement('canvas');
canvas.setAttributeNode(wNode);
canvas.setAttributeNode(hNode);
var ctx = canvas.getContext('2d');
ctx.drawImage(this, 0, 0, w, h);
var base64Data = canvas.toDataURL('image/jpeg', quality);
var bl = convertBase64UrlToBlob(base64Data);
var form = new FormData();
form.append("file", bl, "file_"+Date.parse(new Date())+suffix); // 文件对象
console.log(form)'
document.getElementById('showImg2').src = base64Data;
}
}
}
/**
* 将以base64的图片url数据转换为Blob
* @param urlData
* 用url方式表示的base64图片数据
*/
function convertBase64UrlToBlob(urlData){
var arr = urlData.split(','), mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], {type:mime});
}
</script>
</body>
</html>