前端实现上传的图片压缩
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>哈哈</title>
</head>
<style>
#preview {
display: inline-block;
width: 2.56rem;
height: 2.56rem;
position: relative;
background-repeat: no-repeat;
background-size:cover ;
}
</style>
<body>
<div id="preview"></div>
<input id="file" type="file">
</body>
<script type="text/javascript">
var eleFile = document.querySelector('#file');
var elepreviewFile = document.querySelector('#preview');
var reader = new FileReader(),
img = new Image();
var file = null;
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
img.onload = function() {
var originWidth = this.width;
var originHeight = this.height;
var maxWidth = 800,
maxHeight = 800;
var targetWidth = originWidth,
targetHeight = originHeight;
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.width = targetWidth;
canvas.height = targetHeight;
context.clearRect(0, 0, targetWidth, targetHeight);
context.drawImage(img, 0, 0, targetWidth, targetHeight);
var newUrl = canvas.toDataURL('image/jpeg', 0.92);
elepreviewFile.style.backgroundImage='url(' + newUrl + ')';
};
reader.onload = function(e) {
img.src = e.target.result;
};
eleFile.addEventListener('change', function(event) {
file = event.target.files[0];
if(file.type.indexOf("image") == 0) {
reader.readAsDataURL(file);
}
});
</script>
</html>