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执行顺序
Nov 09 Javascript
Javascript Object.extend
May 18 Javascript
浏览器加载、渲染和解析过程黑箱简析
Nov 29 Javascript
JS实现FLASH幻灯片图片切换效果的方法
Mar 04 Javascript
AngularJS快速入门
Apr 02 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
Jul 10 jQuery
vue watch自动检测数据变化实时渲染的方法
Jan 16 Javascript
解析Vue.js中的组件
Feb 02 Javascript
jQuery实现的手动拖动控制进度条效果示例【测试可用】
Apr 18 jQuery
微信实现自动跳转到用其他浏览器打开指定APP下载
Feb 15 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
Jul 10 jQuery
浅谈react路由传参的几种方式
Mar 23 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
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
YII中assets的使用示例
2014/07/31 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
2007/01/29 Javascript
javascript 用记忆函数快速计算递归函数
2010/03/15 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
AngularJS压缩JS技巧分析
2016/11/08 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
妙用Angularjs实现表格按指定列排序
2017/06/23 Javascript
shiro授权的实现原理
2017/09/21 Javascript
vue自定义全局组件(自定义插件)的用法
2018/01/30 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
Python操作列表之List.insert()方法的使用
2015/05/20 Python
Python二维码生成识别实例详解
2019/07/16 Python
Python完成哈夫曼树编码过程及原理详解
2019/07/29 Python
python数据归一化及三种方法详解
2019/08/06 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
九年级体育教学反思
2014/01/23 职场文书
机械制造专业毕业生求职信
2014/03/02 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
个人求职信格式范文
2015/03/20 职场文书
超市员工辞职信范文
2015/05/12 职场文书
2015年度环卫处工作总结
2015/07/24 职场文书
教学副校长工作总结
2015/08/13 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
适合后台管理系统开发的12个前端框架(小结)
2021/06/29 Javascript