html5将图片转换成base64的实例代码-HTML5教程

本文由 文梅画史 于 2016-11-20 10:56 发布在  HTML5教程    


base64编码介绍ECSHTML5中文学习网 - HTML5先行者学习网
base64是一种网络上常用的8bit字节代码的编码方式,base64可以用于http环境下传递较长的标识信息,同时可以放在url当中使用,因为base64不惧可读性,所以具有一定的加密功能。ECSHTML5中文学习网 - HTML5先行者学习网

为什么要把图片转换成base64编码?ECSHTML5中文学习网 - HTML5先行者学习网
将图片转换成base64代码可以减少http请求,因为图片可以以字符编码的形式直接传递到客户端,而文件形式都需要进行http请求。但是也会有一个小缺点,就是图片编码化base64的时候大小会变大,但是通过gzip优化以后基本差不多。所以在应用的过程当中较小的图片可以直接编码成base64,较大的图片则不建议如此使用。ECSHTML5中文学习网 - HTML5先行者学习网

html5如何将图片转换成base64?ECSHTML5中文学习网 - HTML5先行者学习网
html5如果要将图片转换成base64需要使用到一个html5的接口FileReader.readAsDataURL()接口说明,这个接口可以将文件转换成base64编码格式,并且再以data:URL的形式展现出来。ECSHTML5中文学习网 - HTML5先行者学习网

示例程序ECSHTML5中文学习网 - HTML5先行者学习网
下面的代码是示例程序,创建一个新html文件,然后将代码复制粘贴使用支持html5的浏览器打开即可查看效果。ECSHTML5中文学习网 - HTML5先行者学习网

复制代码
代码如下:
ECSHTML5中文学习网 - HTML5先行者学习网
<!Doctype html>ECSHTML5中文学习网 - HTML5先行者学习网
<html>ECSHTML5中文学习网 - HTML5先行者学习网
<head>ECSHTML5中文学习网 - HTML5先行者学习网
<meta charset="utf-8" />ECSHTML5中文学习网 - HTML5先行者学习网
<title>html5 image to base64</title>ECSHTML5中文学习网 - HTML5先行者学习网
</head>ECSHTML5中文学习网 - HTML5先行者学习网
<body>ECSHTML5中文学习网 - HTML5先行者学习网
<script type="text/javascript">ECSHTML5中文学习网 - HTML5先行者学习网
window.onload = function(){ ECSHTML5中文学习网 - HTML5先行者学习网
// 抓取上传图片,转换代码结果,显示图片的domECSHTML5中文学习网 - HTML5先行者学习网
var img_upload=document.getElementById("img_upload");ECSHTML5中文学习网 - HTML5先行者学习网
var base64_code=document.getElementById("base64_code");ECSHTML5中文学习网 - HTML5先行者学习网
var img_area=document.getElementById("img_area");ECSHTML5中文学习网 - HTML5先行者学习网
// 添加功能出发监听事件ECSHTML5中文学习网 - HTML5先行者学习网
img_upload.addEventListener('change',readFile,false);}ECSHTML5中文学习网 - HTML5先行者学习网
function readFile(){ECSHTML5中文学习网 - HTML5先行者学习网
var file=this.files[0];ECSHTML5中文学习网 - HTML5先行者学习网
if(!/image///w+/.test(file.type)){ ECSHTML5中文学习网 - HTML5先行者学习网
alert("请确保文件为图像类型"); ECSHTML5中文学习网 - HTML5先行者学习网
return false; ECSHTML5中文学习网 - HTML5先行者学习网
}ECSHTML5中文学习网 - HTML5先行者学习网
var reader=new FileReader();ECSHTML5中文学习网 - HTML5先行者学习网
reader.readAsDataURL(file);ECSHTML5中文学习网 - HTML5先行者学习网
reader.onload=function(){ECSHTML5中文学习网 - HTML5先行者学习网
base64_code.innerHTML = this.result; ECSHTML5中文学习网 - HTML5先行者学习网
img_area.innerHTML = '<div>图片img标签展示:</div><img src="'+this.result+'" alt=""/>'; ECSHTML5中文学习网 - HTML5先行者学习网
}ECSHTML5中文学习网 - HTML5先行者学习网
}ECSHTML5中文学习网 - HTML5先行者学习网
</script>ECSHTML5中文学习网 - HTML5先行者学习网
<input type="file" id="img_upload"/>ECSHTML5中文学习网 - HTML5先行者学习网
<textarea id="base64_code" rows="30" cols="360"></textarea>ECSHTML5中文学习网 - HTML5先行者学习网
<p id="img_area"></p>ECSHTML5中文学习网 - HTML5先行者学习网
</body>ECSHTML5中文学习网 - HTML5先行者学习网
</html>ECSHTML5中文学习网 - HTML5先行者学习网
ECSHTML5中文学习网 - HTML5先行者学习网


html5图片转换base64代码ECSHTML5中文学习网 - HTML5先行者学习网

ECSHTML5中文学习网 - HTML5先行者学习网

程序的设计思路ECSHTML5中文学习网 - HTML5先行者学习网
1.创建三个html标签,input用来上传图片,textarea用来显示base64代码,因为base64代码内容很多所以使用textarea标签,p标签用来显示图片。ECSHTML5中文学习网 - HTML5先行者学习网
2.使用js调用html5的FileReader.readAsDataURL()的API,声明三个变量用于控制图片上传,base64代码显示以及图片的显示。ECSHTML5中文学习网 - HTML5先行者学习网
3.img_upload.addEventListener('change',readFile,false);添加一个监听事件,如果上传文件发生变化就执行readFile函数。ECSHTML5中文学习网 - HTML5先行者学习网
4.readFile函数的内容就是调用接口,将图片转换成base64再输出。ECSHTML5中文学习网 - HTML5先行者学习网
5.在执行转换和输出之前先判断一下上传文件是不是图片。ECSHTML5中文学习网 - HTML5先行者学习网

代码解析及注意ECSHTML5中文学习网 - HTML5先行者学习网
1.var file=this.files[0];这里是抓取到上传的对象。ECSHTML5中文学习网 - HTML5先行者学习网
2.this.result这个result是FileReader.readAsDataURL()接口当中转换完图片输出的base64结果存放在result当中。在代码当中添加console.log(reader);查看一下FileReader对象就可以看到。(reader是我自己起的对象的名称)ECSHTML5中文学习网 - HTML5先行者学习网

ECSHTML5中文学习网 - HTML5先行者学习网

ECSHTML5中文学习网 - HTML5先行者学习网
我使用html5将图片转换成base64代码的目的主要是想将图片写入到浏览器本地的数据当中来使用,上传的时候,再尝试恢复出来上传图片。目的是为了减少本地浏览器应用和服务器的数据通信。ECSHTML5中文学习网 - HTML5先行者学习网

总结ECSHTML5中文学习网 - HTML5先行者学习网
以上就是这篇文章的全部内容,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。ECSHTML5中文学习网 - HTML5先行者学习网


标签: HTML5教程

分享本文至:

发表评论:

网站管理  |  HTML5之家-国内最大的HTML5学习平台-HTML5教程-HTML5学习-HTML5资料  |  手机版  |  RSS  |  留言建议  |  关于本站  |  联系方式

All Rights Reserved. Powered by emlog Themes by 易玩稀有

在线客服系统
京ICP备15004106号-2
sitemap 网站地图