相关文章推荐
失望的乌冬面  ·  QTextEdit / ...·  7 月前    · 
逃跑的槟榔  ·  在PySpark SQL中解析JSON·  8 月前    · 
var blob = new Blob([data], {type: ‘text/plain‘});
var reader = new FileReader();
reader.onload = function(e) {
    callback(e.target.result);
};
reader.readAsArrayBuffer(blob);

ArrayBuffer to Blob

var buffer = new ArrayBuffer(32);
var blob = new Blob([buffer]);       // 注意必须包裹[]

ArrayBuffer to Uint8

Uint8数组可以直观的看到ArrayBuffer中每个字节(1字节 == 8位)的值。一般我们要将ArrayBuffer转成Uint类型数组后才能对其中的字节进行存取操作。

var buffer = new ArrayBuffer(32);
var u8 = new Uint8Array(buffer);

Uint8 to ArrayBuffer

我们Uint8数组可以直观的看到ArrayBuffer中每个字节(1字节 == 8位)的值。一般我们要将ArrayBuffer转成Uint类型数组后才能对其中的字节进行存取操作。

var uint8 = new Uint8Array();
var buffer = uint8.buffer; 

Array to ArrayBuffer

var arr = [0x15,0xFF,0x01,0x00,0x34,0xAB,0x11];
var uint8 = new Uint8Array(arr);
var buffer = uint8.buffer;


获取/设置ArrayBuffer对应的数值

一串ArrayBuffer是可以被“理解”为很多个值的,以下面这个值为例,

按照服务端的协议,这串数据流的格式如下:
1 unsign byte (1字节) + 1 unsign int (4字节) + 1 unsign short (2字节)

var arr = [0x01,0x02,0x00,0x00,0x00,0x00,0x03];
var u8 = new Uint8Array(arr);
var ab = u8.buffer;
console.log(ab); // ab为要解析的ArrayBuffer
var u8 = new Uint8Array(ab, 0, 1); // (arraybuffer, 字节解析的起点, 解析的长度)
var val_byte = u8[0];
console.log(val_byte);
// 解析unsign int
// 由于Uint32Array的解析起点必须是4的整数倍,而在流中该数据的起点是1,所以选择先“裁剪”(slice)出要解析的流片段,再用Uint32去解析该片段
var u32buff = ab.slice(1, 5);
var u32 = new Uint32Array(u32buff);
var val_uint = u32[0];
console.log(val_uint);
// 解析unsign short
var u16buff = ab.slice(5, 7);
var u16 = new Uint16Array(u16buff);
var val_short = u16[0];
console.log(val_short);

TypeArray to Array

function Uint8Array2Array(u8a) {
    var arr = [];
    for (var i = 0; i < u8a.length; i++) {
        arr.push(u8a[i]);
    return arr;

canvas转换为dataURL 

var png = canvas.toDataURL(‘image/png‘);
var jpg = canvas.toDataURL(‘image/jpeg‘, 0.8);


File、Blob对象转换为dataURL

File对象也是一个Blob对象,二者的处理相同。

function readBlobAsDataURL(blob, callback) {
    var a = new FileReader();
    a.onload = function(e) {callback(e.target.result);};
    a.readAsDataURL(blob);
//example:
readBlobAsDataURL(blob, function (dataurl){
    console.log(dataurl);
readBlobAsDataURL(file, function (dataurl){
    console.log(dataurl);


dataURL转换为Blob对象

function dataURLtoBlob(dataurl) {
    var arr = dataurl.split(‘,‘), mime = arr[0].match(/:(.*?);/)[1],
    bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
    while(n--){
        u8arr[n] = bstr.charCodeAt(n);
    return new Blob([u8arr], {type:mime});
//test:
var blob = dataURLtoBlob(‘data:text/plain;base64,YWFhYWFhYQ==‘);


dataURL图片数据绘制到canvas

先构造Image对象,src为dataURL,图片onload之后绘制到canvas

var img = new Image();
img.onload = function(){
    canvas.drawImage(img);
img.src = dataurl;

File,Blob的图片文件数据绘制到canvas

还是先转换成一个url,然后构造Image对象,src为dataURL,图片onload之后绘制到canvas

利用上面的 readBlobAsDataURL 函数,由File,Blob对象得到dataURL格式的url,再参考 dataURL图片数据绘制到canvas

readBlobAsDataURL(file, function (dataurl){
    var img = new Image();
    img.onload = function(){
        canvas.drawImage(img);
    img.src = dataurl;


不同的方法用于构造不同类型的url (分别是 dataURL, objectURL(blobURL), filesystemURL)。这里不一一介绍,仅以dataURL为例。

filesystemURL不是指本地文件URL的形式(file:///….), 而是格式类似于 filesystem:http://... 的一种URL,支持沙盒文件系统的浏览器支持(目前仅Chrome)支持。

Canvas转换为Blob对象并使用Ajax发送

转换为Blob对象后,可以使用Ajax上传图像文件。

先从canvas获取dataurl, 再将dataurl转换为Blob对象

var dataurl = canvas.toDataURL(‘image/png‘);
var blob = dataURLtoBlob(dataurl);
//使用ajax发送
var fd = new FormData();
fd.append("image", blob, "image.png");
var xhr = new XMLHttpRequest();
xhr.open(‘POST‘, ‘/server‘, true);
xhr.send(fd);
Blob to ArrayBuffervar blob = new Blob([data], {type: ‘text/plain‘});var reader = new FileReader();reader.onload = function(e) { callback(e.target.result);}; reader.readAsArrayBuffer(blob);
前言:上一篇讲的请求网络图片得到ArrayBuffer对象或Bold对象通过处理转换得到 Bold URL 后放到img元素显示,本文将介绍什么是Bold、ArrayBuffer 一、Blob API 1. 简介 Blob(Binary Large Object)表示二进制类型的大对象。Blob(Binary Large Object)表示二进制类型的大对象。在数据库管理系统中,将二进制数据存储为一个单一个体的集合。Blob 通常是影像、声音或多媒体文件。在 JavaScript 中 Blob 类型的对象表
假如后端传过来一个 a.jpg 图片文件,但这个文件的数据类型是 ArrayBuffer,想要用 URL.createObjectURL 展示图片,如何做到? createObjectURL 函数的参数是 File 对象、Blob 对象或者 MediaSource 对象。​因此就要将 ArrayBuffer 转成这三者中的其一类型。 ArrayBufferFile 相互转换 ArrayBuffer 转成 File 直接调用 new File 构造函数即可: function bufToFile(buf,
Blob(Binary Large Object)术语最初来自数据库(oracle 中也有类似的栏位类型。),早期数据库因为要存储声音、图片、以及可执行程序等二进制数据对象所以给该类对象取名为Blob。 在Web领域,Blob被定义为包含只读数据的类文件对象。Blob中的数据不一定是js原生数据形式。常见的File接口就继承自Blob,并扩展它用于...
Blob: 是浏览器环境上提供的一种大对象,通常是影像、声音或多媒体文件等原始数据的二进制对象,它和 ArrayBuffer 没有必然联系,但是又可以互相转化,Blob用于操作二进制文件,而 ArrayBuffer 用于操作内存。 详见Blob var htmlFragment = ['<a id="a"><b id="b">hey!</b></a>']; var myBlob = new Blob(htmlFragment, {type : 'text/.
yinwhm12: 博主你好,我也遇到了同样的问题,我查看了一下orderer容器的日志,有如下的错误: UTC [core/comm] ServerHandshake -> ERRO 0f1 TLS handshake failed with error remote error: tls: bad certificate {"server": "PeerServer", "remote address": "172.18.0.7:50764"} 报的是tls证书有问题 fabric ca tls生成 yinwhm12 普通网友: 版本是多少你的部署fabric网络