大家好,今年是2021年1月25日,星期一,农历的腊月十三,春节的离我们越来越近,但我们依然要保持一颗平静的心来迎接工作。今天我们为大家来介绍JS直接获取图片的base64编码并压缩后显示的代码及方法。
首先为大家介绍下什么是“图片的base64编码”:
图片的 base64 编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址。
那么为什么要使用 base64 传输图片文件?因为这样可以节省一个 http 请求。图片的 base64 编码可以算是前端优化的一环。效益虽小,但却缺能积少成多。
其次我们来看看利用js如何来获取图片的base64编码:
<!DOCTYPE html>
<html>
<head>
<meta charset="gbk">
<title></title>
</head>
<body>
<input accept="image/*" name="upimage" id="upload_file" type="file" onchange="gen_base64()">
<br/>
<textarea id="base64_output" name="Word" style=" width:820px"></textarea>
<br/>
<img src="" id="myImg" />
<script type="text/javascript">
function $_(id) {
return document.getElementById(id);
}
function gen_base64() {
var file = $_('upload_file').files[0];
r = new FileReader(); //本地预览
r.onload = function(){
$_('base64_output').value = r.result;
$_('myImg').src= r.result;
}
r.readAsDataURL(file); //Base64
}
</script>
</body>
</html>
接着我们来进行压缩后显示:
<html>
<body>
<script>
function getUrl(fil) {
var Cnv = document.getElementById('myCanvas');
var Cntx = Cnv.getContext('2d');//获取2d编辑容器
var imgss = new Image();//创建一个图片
var agoimg=document.getElementById("ago");
for (var intI = 0; intI < fil.length; intI++) {//图片回显
var tmpFile = fil[intI];
var reader = new FileReader();
reader.readAsDataURL(tmpFile);
reader.onload = function (e) {
url = e.target.result;
imgss.src = url;
agoimg.src=url;
agoimg.onload = function () {
//等比缩放
var m = imgss.height / imgss.width;
Cnv.width = 300 ;//该值影响缩放后图片的大小
Cnv.height =300*m;
//img放入画布中
Cntx.drawImage(agoimg, 0, 0,300,300*m);
//把画布中的数据,写出到某img的src里
var Pic = document.getElementById("myCanvas").toDataURL("image/png");
var imgs =document.getElementById("press");
imgs.src =Pic ;
}
}
}
}
</script>
<input type="file" id="fileId" name="fileId" value="上传图片" hidefocus="true" onchange="getUrl(this.files);"/> <br/>
<canvas id="myCanvas" style="display: block" ></canvas>
old img::<img src="" alt="" id="ago" style="width: 500px;"/>
new img::<img src="" alt="" id="press"/>
</body>
</html>
最后我们来看看最终的效果:
好了,以上两段代码就可以实现我们今天为大家介绍的关于JS直接获取图片的base64编码并压缩后显示的代码及方法的全部内容了,希望对您有所帮助,喜欢的话记得收藏哦!