JavaScript使用readAsDataURL读取图像文件


Posted in Javascript onMay 10, 2017

FileReader对象的readAsDataURL方法可以将读取到的文件编码成Data URL。Data URL是一项特殊的技术,可以将资料(例如图片)内嵌在网页之中,不用放到外部文件。使用Data URL的好处是,您不需要额外再发出一个HTTP 请求到服务器端取得额外的资料;而缺点便是,网页的大小可能会变大。它适合应用在内嵌小图片,不建议将大图像文件编码成Data URL来使用。您的图像文件不能够超过浏览器限定的大小,否则无法读取图像文件。

参考以下使用readAsDataURL读取图像文件范例:

<!DOCTYPE html>
<html xmlns = "http://www.w3.org/1999/xhtml" >
<head>
  <title> </title>
  <script type = "text/javascript" >
    function ProcessFile( e ) { 
      var file = document.getElementById('file').files[0];
      if (file) {
        
        var reader = new FileReader();
        reader.onload = function ( event ) { 
          var txt = event.target.result;
          document.getElementById("result").innerHTML = txt;
          };
       }
      reader.readAsDataURL( file );
      }
    function contentLoaded () {
      document.getElementById('file').addEventListener( 'change' ,
ProcessFile , false );
    }
    window.addEventListener( "DOMContentLoaded" , contentLoaded , false );
  </script>
</head>
<body>
  请选取一个图像文件: <input type = "file" id = "file" name = "file" />
  <div id = "result"> </div>
</body>
</html>

 

readAsDataURL方法会使用base-64进行编码,编码的资料由data字串开始,后面跟随的是MIME type,然后再加上base64字串,逗号之后就是编码过的图像文件的内容。
使用Img显示图像文件 

若想要将读取出来的图像文件,直接显示在网页上,您可以透过JavaScript建立一个<img>标签,再设定src属性为Data URL,再将<img>标签加入DOM之中,例如以下范例所示:

<!DOCTYPE html>
<html xmlns = "http://www.w3.org/1999/xhtml" >
<head>
<title> </title>
<script type = "text/javascript" >
function ProcessFile( e ) { 
var file = document.getElementById('file').files[0];
if ( file ) {
 
var reader = new FileReader();
reader.onload = function ( event ) { 
var txt = event.target.result;
var img = document.createElement("img");
img.src = txt;
document.getElementById("result").appendChild( img );
};
}
reader.readAsDataURL( file );
}
function contentLoaded() {
document.getElementById('file').addEventListener( 'change' ,
ProcessFile , false );
}
window.addEventListener( "DOMContentLoaded" , contentLoaded , false );
</script>
</head>
<body>
请选取一个图像文件: <input type = "file" id = "file" name = "file" />
<div id = "result"> </div>
</body>
</html>

读取部分文件

有时想要读取的文件太大,想要分段进行读取;或者只想要读取文件部分的内容,这时您可以将文件切割,根据浏览器的不同,可以使用以下方法:
webkitSlice:适用于支持Webkit引擎的浏览器,如Chrome。
mozSlice:适用于Firefox。
这两个方法要传入开始的位元组索引,以及结尾的位元组索引,索引以0开始。以下程式范例以FileReader对象的readAsBinaryString方法来读取文件,只读取文件的第三个位元组读取到第六个位元组:

<!DOCTYPE html>
<html xmlns ="http://www.w3.org/1999/xhtml" >
<head>
<title> </title>
<script type = "text/javascript" >
function ProcessFile( e ) {
var file = document.getElementById( 'file' ).files[0];
if ( file ) {
var reader = new FileReader ();
reader.onload = function ( event ) {
var txt = event.target.result;
document.getElementById( "result" ).innerHTML = txt;
};
}
if ( file.webkitSlice ) {
var blob = file.webkitSlice( 2, 4 );
} else if ( file.mozSlice ) {
var blob = file.mozSlice( 2, 4 );
}
reader.readAsBinaryString( blob );
}
function contentLoaded() {
document.getElementById( 'file' ).addEventListener( 'change' ,
ProcessFile , false );
}
window.addEventListener( "DOMContentLoaded", contentLoaded , false );
</script>
</head>
<body>
<input type = "file" id = "file" name = "file" />
<div id = "result" > </div>
</body>
</html>

请注意:

不同的浏览器对于HTML 5的支持程度不同,上述程式码可在chrome正常执行,不见得可以在其它浏览器中正确的执行。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 限制数字 js限制输入实现代码
Dec 04 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
Oct 08 Javascript
利用js(jquery)操作Cookie的方法说明
Dec 19 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
Dec 30 Javascript
多种方法实现load加载完成后把图片一次性显示出来
Feb 19 Javascript
在Ubuntu上安装最新版本的Node.js
Jul 14 Javascript
javascript实现无缝上下滚动特效
Dec 16 Javascript
js改变透明度实现轮播图的算法
Aug 24 Javascript
jquery编写日期选择器
Mar 16 Javascript
es6系列教程_ Map详解以及常用api介绍
Sep 25 Javascript
vue实现二级导航栏效果
Oct 19 Javascript
vue实现div单选多选功能
Jul 16 Javascript
angular.js指令中的controller、compile与link函数的不同之处
May 10 #Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
May 10 #Javascript
详解vue-router 2.0 常用基础知识点之router.push()
May 10 #Javascript
JavaScript通过filereader接口读取文件
May 10 #Javascript
关于vue-router路径计算问题
May 10 #Javascript
JavaScript使用readAsDataUrl方法预览图片
May 10 #Javascript
Bootstrap table使用方法总结
May 10 #Javascript
You might like
我的论坛源代码(六)
2006/10/09 PHP
php连接函数implode与分割explode的深入解析
2013/06/26 PHP
Discuz!X中SESSION机制实例详解
2015/09/23 PHP
为你总结一些php信息函数
2015/10/21 PHP
laravel学习教程之存取器
2016/07/30 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
js 加载并解析XML字符串的代码
2009/12/13 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
js 幻灯片的实现
2011/12/06 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
window.open打开窗口被拦截的快速解决方法
2016/08/04 Javascript
js实现返回顶部效果
2017/03/10 Javascript
JavaScript实现的数字与字符串转换功能示例
2017/08/23 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
使用mint-ui开发项目的一些心得(分享)
2017/09/07 Javascript
微信小程序左滑动显示菜单功能的实现
2018/06/14 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
2019/08/29 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
python实现简单的单变量线性回归方法
2018/11/08 Python
Python可迭代对象操作示例
2019/05/07 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
村党支部书记四风问题个人对照检查材料思想汇报
2014/10/06 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
2015年世界无烟日演讲稿
2015/03/18 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
九年级数学教学反思
2016/02/17 职场文书