js图片压缩和上传并显示

由于近期项目中需要做个图片压缩上传,所以就在网上找了些资料自己写了一个

html部分

<input id="file" type="file">
<img id="imga" src="" alt="">

js部分

var eleFile = document.querySelector('#file');
// 压缩图片需要的一些元素和对象
var reader = new FileReader();
var imga=document.getElementById('imga');
var img = new Image();
// base64地址图片加载完毕后
img.onload = function() {
var originWidth = this.width, //image resize 压缩后的宽
originHeight=this.height,
maxWidth = 400, maxHeight = 400,
quality = 0.8, //image quality 压缩质量
canvas = document.createElement('canvas'),
drawer = canvas.getContext("2d");
canvas.width = maxWidth;
canvas.height = originHeight/originWidth*maxWidth;
drawer.drawImage(img, 0, 0, canvas.width, canvas.height);
//上传到七牛云base64
var base64 = canvas.toDataURL("image/jpeg", quality); // 这里就拿到了压缩后的base64图片
//console.log(base64);
//blob对象
canvas.toBlob(function(blob){
//console.log(blob)
}, "image/jpeg", quality);
var file = dataURLtoFile(base64, 'name');
console.log(file);
imga.src=base64; };
//base64转file
//filename图片的名字dataurl是base64地址
function dataURLtoFile(dataurl, filename) {
var arr = dataurl.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 File([u8arr], filename, {type:mime});
} // 文件base64化,以便获知图片原始尺寸
reader.onload = function() {
//reader.result就是base64
img.src = reader.result;
};
//addEventListener监听change事件
eleFile.addEventListener('change', function () {
file = this.files[0];
// 选择的文件是图片
if (file.type.indexOf("image") == 0) {
//console.log(file);
reader.readAsDataURL(file); //以数据url的方式读取文件内容 }
});

效果图

js图片压缩和上传并显示

js图片压缩和上传并显示

上一篇:JavaScript核心知识点


下一篇:Collection使用方法