base64转图片的代码
base64转图片,之后如何保存为一个文件?用js代码或者在线工具即可搞定
js代码如下
1 | function dataURLtoBlob(dataurl) { |
原理
在了解了js内置的各种对象之后就能意会其中的原理了
fileReader
可以读取多种文件类型,读取结果也可以转换为多种类型的数据
1 | fileInput = document.querySelector('input[type=file]'); |
ArrayBuffer
ArrayBuffer类型的数据只能读取,不能修改,没有提供任何读写内存的方法,开辟连续的内存区域后,通过数据视图(如下类型)来操作
1 | //创建一个长度为8的ArrayBuffer,此时开辟一个固定8个字节的缓冲区也就是64位 |
数据视图和类型数组
主要就是插入与读取arrayBuffer中的数据
类型数组TypedArray
- Int8Array:8位有符号整数,长度1个字节。(-128~127)
1
2
3
4
5
6
7
8
9var a = new Int8Array(2);
a[0] = -128;
a[1] = 128;
console.log(a[1] == a[0]); // true
var b = new Int8Array(new ArrayBuffer(2));
b[0] = -128;
b[1] = 128;
console.log(a.toString() == b.toString());// true - Uint8Array:8位无符号整数,长度1个字节。(0~255)
new Uint8Array(1) 同等于 new Uint8Array(new ArrayBuffer(1))
- Int16Array:16位有符号整数,长度2个字节。(-32768,32767)
- Uint16Array:16位无符号整数,长度2个字节。(0~65535)
- Int32Array:32位有符号整数,长度4个字节。(-2147483648~2147483647)
- Uint32Array:32位无符号整数,长度4个字节。(0~4294967295)
- Float32Array:32位浮点数,长度4个字节。
- Float64Array:64位浮点数,长度8个字节。
以上几种统称为类型数组,看得出来的确有很多种类型,每种用法都大同小异
例子如下:
1 | // 创建8个字节长度的缓存冲 |
数据视图DataView
DataView是一种底层的,更灵活的读取 ArrayBuffer 的视图,虽然有以上类型数组的'翻译器'操作ArrayBuffer,但是我们不想固化使用的情况下,就得用DataView对象来操作ArrayBuffer了
1 | new DataView(buffer [, byteOffset [, byteLength]]); |
第一个参数 buffer 为必填,它支持传入一个 ArrayBuffer 表示 DataView 中的源数据。
第二个参数 byteOffset 选填,它表示创建 DataView 时开头从 buffer 的哪个字节开始,可以作为启始偏移量。未指定时,默认从第一个字节开始。
第三个参数 byteLength 选填,它表示创建该 DataView 时的长度,当不传递默认时表示匹配 buffer 的长度。
1 | // 创建8个字节长度的缓存冲 |
blob
const blob = new Blob( array, options );
第一个参数 array 是一个由ArrayBuffer, ArrayBufferView, Blob, DOMString 等对象构成的 Array
是浏览器环境上提供的一种大对象,通常是影像、声音或多媒体文件等原始数据的二进制对象,主要用作给后端传递数据,或者转换成BlobURL
BlobURL
blob对象是用作和后端打交道的,那如果和前端html文档打交道就得用BlogURL伪协议对象了。像img或者video或者background的src属性都用BlobURL,不能直接用Blob,可以理解为对blob对应的一个指针
DataURL
允许将较小的内容文件嵌入到html文档中。可以将其用作BlobURL的替代
其格式为:
1
2
3
4
5data:[<mediatype>][;base64],data
data:前缀
mediatype表明数据类型,是一个MIME类型字符串,如image/jpeg表示一个JPEG图片文件。如果省略,默认值为text/plain;charset=US-ASCII。
base64:标志位(如果是文本,则可选)
data:数据本身
Array
js数组类型同[]
,其功能强大能在各种环境下使用,但不一定最优适用于环境