html5将图片转换成base64的实例代码


Posted in HTML / CSS onSeptember 21, 2016

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

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

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

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

复制代码
代码如下:

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

html5图片转换base64代码

html5将图片转换成base64的实例代码

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

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

html5将图片转换成base64的实例代码

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

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

HTML / CSS 相关文章推荐
HTML5离线缓存Manifest是什么
Mar 09 HTML / CSS
HTML5文档结构标签
Apr 21 HTML / CSS
Html5 Canvas 实现一个“刮刮乐”游戏
Sep 05 HTML / CSS
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
Jan 31 HTML / CSS
html5教程调用绘图api画简单的圆形代码分享
Dec 04 HTML / CSS
html5中svg canvas和图片之间相互转化思路代码
Jan 24 HTML / CSS
HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线
Jan 01 HTML / CSS
Html5 APP中监听返回事件处理的方法示例
Mar 15 HTML / CSS
htnl5利用svg页面高斯模糊的方法
Jul 20 HTML / CSS
canvas拼图功能实现代码示例
Nov 21 HTML / CSS
HTML5拖放API实现自动生成相框功能
Apr 07 HTML / CSS
HTML5中在title标题标签里设置小图标的方法
Jun 23 HTML / CSS
CSS3 画基本图形,圆形、椭圆形、三角形等
Sep 20 #HTML / CSS
html5本地存储 localStorage操作使用详解
Sep 20 #HTML / CSS
使用Html5实现异步上传文件,支持跨域,带有上传进度条
Sep 17 #HTML / CSS
a标签下载链接的简单实现
Sep 13 #HTML / CSS
HTML5新增加的功能详解
Sep 05 #HTML / CSS
HTML5新增加标签和功能概述
Sep 05 #HTML / CSS
H5 meta小结(前端必看篇)
Aug 24 #HTML / CSS
You might like
如何在PHP程序中防止盗链
2008/04/09 PHP
PHP迅雷、快车、旋风下载专用链转换代码
2010/06/15 PHP
PHP不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
php简单socket服务器客户端代码实例
2015/05/18 PHP
使用OpenLayers3 添加地图鼠标右键菜单
2015/12/29 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
Bootstrap零基础入门教程(三)
2016/07/18 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
巧用canvas
2017/01/21 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
微信小程序多音频播放进度条问题
2018/08/28 Javascript
详解js中let与var声明变量的区别
2020/04/05 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
vue仿ios列表左划删除
2019/09/26 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
python list使用示例 list中找连续的数字
2014/01/27 Python
Python实现的数据结构与算法之双端队列详解
2015/04/22 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
理论讲解python多进程并发编程
2018/02/09 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
Python生成指定数量的优惠码实操内容
2019/06/18 Python
python numpy库np.percentile用法说明
2020/06/08 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局
2014/10/10 HTML / CSS
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
2015/04/24 HTML / CSS
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
保护动物的标语
2014/06/11 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
2014年派出所工作总结
2014/11/21 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
2015年学生会干事工作总结
2015/04/09 职场文书
2016高三毕业赠言寄语
2015/12/04 职场文书