blob:代表了一段二进制数据

初始化:var blob = new Blob(array,option)//其中array里面可以包含任意类型对象,option指数据类型如array是['<h></h>'],我们可以指定option为{'type':'text\/xml'}

衍生品:因为作为二进制需要与外界进行交互,所以分别退出三个衍生品

1:File对象 二进制与本地文件的交互

2:FileReader对象 二进制与本地内存的交互

3:URL对象 二进制与url的交互

  FIle对象:

    通过html的file控件,用户选择好文件后,我们通过file对象的file[0]可以拿到用户选择的文件(如果用户选择多个文件,可以遍历取得),拿到file文件后其实以一个blob类型的对象,我们可以使用blob的slice进行文件切割或其他处理

  FileReader:

    FileReader对象接收File对象或Blob对象作为参数,用于读取文件的实际内容,即把文件内容读入内存。对于不同类型的文件,FileReader使用不同的方法读取。

      • FileReader.readAsBinaryString(Blob|File) :读取结果为二进制字符串,每个字节包含一个0到255之间的整数。
      • FileReader.readAsText(Blob|File, opt_encoding) :读取结果是一个文本字符串。默认情况下,文本编码格式是'UTF-8',可以通过可选的格式参数,指定其他编码格式的文本。
      • FileReader.readAsDataURL(Blob|File) : 读取结果是一个基于Base64编码的 data-uri 对象。
      • FileReader.readAsArrayBuffer(Blob|File) :读取结果是一个 ArrayBuffer 对象。

    然后我们可以在onload方法里面拿到解析后的内容  

  URL对象:

    URL对象用于生成指向File对象或Blob对象的URL:var objecturl = window.URL.createObjectURL(blob);

canvar: 提供了一种js自己创建图形的能力 

dataUrl:一种图片数据的编码显示

img:图片标签,展示图片,在这里泛指一切显示控件 如vedio span等

dataUrl转blob:

  用途:拿到一个图片后,通过某种方式转换为dataUrl类型,最终转换为blob类型 上传到服务器

  用法:第一种可以将图片放入canvas后利用canvas的toblob方法,或者放入canvas后,利用canvas的todataurl方法获取dataurl后 将dataurl转blob:拿到dataurl后获取逗号后面的编码数据利用window.atob将编码解码,将解码后的字符串使用charcodeat获取每一个字符串的unicode字符,然后存入Uint8Array数组,利用blob初始化把Uint8Array数组转换为blob

blob转dataUrl:

  用途:拿到blob对象后,希望展示这个数据

  用法:使用window.URL.createObjectURL(blob)拿到dataUrl对象,然后进行展示

canvan转blob:canvas 最新的方法 toblob

canvas转dataurl:canvas的实例方法 todataurl

blob转canvas:blob转换为dataurl对象后 新疆一个图片用来显示dataurl数据,然后将图片放入canvas中

dataurl转canvas:dataurl先变成图片再放入canvas

img转canvas:canvas的drawImage方法支持将img放入canvas

canvas转img:利用canvas的todataurl方法获取图片数据后,新建图片控件展示图片

  

blob canvas img dataUrl的互相转换和用处的更多相关文章

  1. [转]DataURL与File,Blob,canvas对象之间的互相转换的Javascript

    来源 http://blog.csdn.net/cuixiping/article/details/45932793 canvas转换为dataURL (从canvas获取dataURL) var d ...

  2. DataURL与File,Blob,canvas对象之间的互相转换的Javascript

    canvas转换为dataURL (从canvas获取dataURL) var dataurl = canvas.toDataURL('image/png'); var dataurl2 = canv ...

  3. DataURL与File,Blob,canvas对象之间的互相转换的Javascript (未完)

    canvas转换为dataURL (从canvas获取dataURL) var dataurl = canvas.toDataURL('image/png'); var dataurl2 = canv ...

  4. 前端图片canvas,file,blob,DataURL等格式转换

    将file转化成base64 方法一:利用URL.createObjectURL() <!DOCTYPE html> <html> <head> <title ...

  5. js实现图片资源、blob、base64的各种场景转换

    文件转babase64 function getImgToBase64(url,callback){//将图片转换为Base64 var canvas = document.createElement ...

  6. HTML5 File API — 让前端操作文件变的可能

    前言 在 HTML5 File API 出现之前,前端对于文件的操作是非常有局限性的,大多需要配合后端实现.出于安全角度考虑,从本地上传文件时,代码不可能获取文件在用户本地的地址,所以纯前端不可能完成 ...

  7. 让编辑器支持word的复制黏贴,支持截屏的黏贴

    chrome有很多人性化的API,比如拖拽, 比如图片可以转化为base64等: 比如知乎上面的回复中可以直接黏贴图片,  就不需要手动点击图片上传按钮, 选择图片, 确认上传等等: 知乎参考地址:打 ...

  8. Blob/DataURL/canvas/image的相互转换

    函数都比较简单,直接看就ok了 /*-----------------------------------------------------------------------*/ // canva ...

  9. canvas转img,blob相互转换

    摘自:https://www.cnblogs.com/jyuf/p/7251591.html 函数都比较简单,直接看就ok了 /*----------------------------------- ...

随机推荐

  1. git之commit

    面解释的话, 1.git commit -m用于提交暂存区的文件: 2.git commit -am用于提交跟踪过的文件. 要理解它们的区别,首先要明白git的文件状态变化周期,如下图所示 工作目录下 ...

  2. OpenStack-Neutron-Fwaas-代码【二】

    上一节从代码层面来讲解了fwaas的流程,这里通过具体查看iptables规则来说下应用规则的流程: 1.首先通过命令获取当前路由中的规则 #ip netns exec qrouter-[router ...

  3. Vue系列之 => html-webpack-plugin的两个基本作用

    安装 npm i html-webpack-plugin -D webpack.config.js const path = require('path'); //启用热更新的第二步,导入webpac ...

  4. symfony command

    symfony 的command系统,有两部分构成:Application和command 1. Application是一个容器,负责对command进行管理. 2.command是每一个具体的命令 ...

  5. Javascript基础语法(三)

    数组 1.什么是数组 有许多变量,它们的名称和数据类型都是一致的. 2. 数组声明 var arr = [元素,元素,元素...]; var arr = new Array(元素,元素,元素...); ...

  6. # 2017-2018-2 20155228 《信息安全系统设计原理》 使用VirtualStudio2008创建和调用静态库和使用VirtualC++6.0创建和调用动态库

    使用virtual c++ 6.0创建和调用动态库 不得不说一下关于环境的问题 只要我打一个响指,一半的安装在win7上的VC6.0都会因为兼容性问题直接崩掉 懒得研究怎么解决兼容性的问题了,直接开一 ...

  7. c#检测是否存在数据库(SQL SERVER)

    private static bool CheckDatabaseExists( string databaseName) { { string sqlCreateDBQuery; bool resu ...

  8. Java中==和equals方法

    Java程序中测试两个变量是否相等有两种方式:1.== :2.equals()方法 当使用==来判断两个变量是否相等时,如果两个变量是基本类型变量,且都是基本数值类型(不一定要求数据类型严格相同),则 ...

  9. hiho一下 第206周

    题目1 : Guess Number with Lower or Higher Hints 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 There is a game ...

  10. Vue 组件&组件之间的通信 之 父组件向子组件传值

    父组件向子组件传值:父组件通过属性向下传值的方式和子组件通信: 使用步骤: 定义组件:现有自定义组件com-a.com-b,com-a是com-b的父组件: 准备获取数据:com-b要获取父组件dat ...