稚久|从图片裁剪来聊聊前端二进制( 二 )
DataView视图是一个可以从二进制ArrayBuffer对象中读写多种数值类型的底层接口 。
- setint8() 从DataView起始位置以byte为计数的指定偏移量(byteOffset)处存储一个8-bit数(一个字节)
- getint8() 从DataView起始位置以byte为基数的指定偏移量(byteOffset)处获取一个8-bit数(一个字节)
new DataView(buffer, [, byteOffset [, byteLength]])示例let buffer = new ArrayBuffer(2);console.log(buffer.byteLength); // 2let dataView = new DataView(buffer);dataView.setInt(0, 1);dataView.setInt(1, 2);console.log(dataView.getInt8(0)); // 1console.log(dataView.getInt8(1)); // 2console.log(dataView.getInt16(0)); // 258TypedArray对象描述了一个底层的二进制数据缓存区(binary data buffer)的一个类数组视图(view) 。
但它本身不可以被实例化 , 甚至无法访问 , 你可以把它理解为接口 , 它有很多的实现 。
实现方法类型单个元素值的范围大小(bytes)描述Int8Array-128 to 12718 位二进制有符号整数Uint8Array0 to 25518 位无符号整数Int16Array-32768 to 32767216 位二进制有符号整数Uint16Array0 to 65535216 位无符号整数
示例
const buffer = new ArrayBuffer(8);console.log(buffer.byteLength); // 8const int8Array = new Int8Array(buffer);console.log(int8Array.length); // 8const int16Array = new Int16Array(buffer);console.log(int16Array.length); // 4BlobBlob是用来支持文件操作的 。 简单的说:在JS中 , 有两个构造函数 File 和Blob, 而File继承了所有Blob的属性 。所以在我们看来 , File对象可以看作一种特殊的Blob对象 。
上面说了 , File对象是一种特殊的Blob对象 , 那么它自然就可以直接调用Blob对象的方法 。 让我们看一看Blob具体有哪些方法 , 以及能够用它们实现哪些功能:
是的 , 我们这里更加倾向于实战中的应用~
atob 和 btoabase64 相信大家都不会陌生吧(不知道的看这里[2]),最常用的操作可能就是图片转 base64 了吧?
在之前要在字符串跟base64之间互转,我们可能需要去网上拷一个别人的方法,而且大部分情况下,你没有时间去验证这个方法是不是真的可靠,有没有bug 。
从IE10+浏览器开始 , 所有浏览器就原生提供了Base64编码解码方法 。
Base64 解码
var decodedData = http://kandian.youth.cn/index/window.atob(encodedData);Base64 编码var encodedData = http://kandian.youth.cn/index/window.btoa(stringToEncode);Canvas中的ImageData对象关于Canvas , 这里我就不做过多介绍了 , 具体可参考canvas 文档[3]今天主要说一下Canvas中的ImageData对象(也是为下面的那个图片裁剪的项目做一些基础知识的铺垫~)
推荐阅读
- 澳洋顺昌|今日股市概况与热点公司扫描(9/7)
- 雪佛兰|美系车里,雪佛兰和福特家用车,差距天壤之别
- 兔玩电竞|JPL职业联赛名将榜第一期,剑网3
- 贵娅说娱乐|搞笑GIF:美少女的自拍
- 鹿晗|鹿晗的人设,终于崩塌了
- 倪妮|双眼皮“割坏了”的倪妮,算什么绝世大美女啊?
- 武汉大学人民医院|泪目!武汉落日余晖照主角重逢
- 波兰队|周一欧国联:波黑VS波兰、以色列VS斯洛伐克
- 5G|小米首款“5G汽车”亮相,小米有哈不能造
- 【幸福花开新边疆】219国道旁的“脱贫事”
