有没有一种方法可以将 ArrayBuffer 中的所有索引设置为 0,并且优化速度很快?我知道我可以进行迭代来手动执行此操作,但我想知道是否有一些内置函数可以快速执行此操作,因为我想每个动画帧执行一次。
我使用读取文件FileReader.readAsArrayBuffer,然后执行如下操作:
var compressedData = pako.gzip(new Uint8Array(this.result));
var blob1 = new Blob([compressedData]); // size = 1455338 bytes
var blob2 = new Blob(compressedData); // size = 3761329 bytes
Run Code Online (Sandbox Code Playgroud)
例如:如果结果有 4194304 字节,压缩后大小将为 1455338 字节。但由于某种原因, Uint8Array 需要包装在数组中。为什么是这样?
我试图从 nodeJS 传递一个类型为“image/jpeg”的 blob 来做出反应。在nodejs端,我使用arraybuffer传递数据,在react端,我尝试使用res.blob检索它,它通常应该将数据转换回来。问题是 axios 返回一个错误,指出 res.blob() 不是函数。那么我如何在反应端检索它呢?任何回复将不胜感激,如果我没有充分描述我的问题,我深表歉意。
这是我在nodejs中的代码
res.type(blob.type);
blob.arrayBuffer().then((buf) => {
res.end(Buffer.from(buf));
});
Run Code Online (Sandbox Code Playgroud)
这是我的反应代码。
axios
.post(imageUrl)
.then((res) => {
return res.blob();
})
.then((blob) => {
storageRef
.child(path + filename)
.put(blob)
.then(function (snapshot) {
return snapshot.ref.getDownloadURL();
})
Run Code Online (Sandbox Code Playgroud) 我希望能够将类似数组的结构增长到最大尺寸,之后每次添加新元素时,最旧的(第一个)元素将从结构中删除.我不知道最好的方法是什么,但一种方法是扩展ArrayBuffer类,并覆盖+ =运算符,这样如果达到最大大小,每次新的时候都会删除第一个元素一个是添加.我还没想出如何正确扩展集合.到目前为止我所拥有的是:
class FiniteGrowableArray[A](maxLength:Int) extends scala.collection.mutable.ArrayBuffer {
override def +=(elem:A): <insert some return type here> = {
// append element
if(length > maxLength) remove(0)
<returned collection>
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以建议一条更好的道路和/或帮助我吗?注意:我需要在+ =操作之间多次任意访问结构中的元素.
谢谢
当我使用时ArrayBuffer,我应该使用:
val arr = new ArrayBuffer[Int]
Run Code Online (Sandbox Code Playgroud)
但是当我使用时Map,我应该使用:
val map = Map[Int, Int]()
Run Code Online (Sandbox Code Playgroud) 我希望加载一个mp3本地文件,然后使用库进行处理,我不能使用XMLHttpRequest,然后我使用下一个代码来读取本地mp3文件:
<!DOCTYPE html>
<html>
<head>
</head>
<body onload="carga();">
<input id="audio_file" type="file" accept="audio/*" />
<audio id="audio_player" />
<script>
function carga() {
audio_file.onchange = function(){
var files = this.files;
console.log(files);
alert(files);
var file = URL.createObjectURL(files[0]);
console.log(file);
alert(file);
audio_player.src = file;
audio_player.play();
};
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但XMLHttpRequest返回ArrayBuffer,我的代码返回一个FileList,我需要一个ArrayBuffer进行下一次处理,如何将本地mp3文件加载为ArrayBuffer?
标题说明了一切.我有一个jquery序列化数据,如下所示:
tarid=value&tarname=value&sel=3
Run Code Online (Sandbox Code Playgroud)
我想将它转换为ArrayBuffer.之后,我还需要再次将其恢复原状.那我该怎么办呢?
我见过的关于 ArrayBuffer 的唯一真正的教程来自HTML5Rocks。但我特别想知道如何操作单个字节。例如,Mozilla 的 ArrayBuffers 上的这个卡通显示了一个包裹在 Uint8Array 视图中的 ArrayBuffer 的图像:
它给人的感觉是你可以用 ArrayBuffer 做到这一点:
var x = new ArrayBuffer(10)
x[0] = 1
x[1] = 0
...
x[9] = 1
Run Code Online (Sandbox Code Playgroud)
即手动设置字节。但是我还没有看到任何关于这种功能的文档。相反,您似乎应该使用 TypedArray 组件之一或 DataView:
var x = new ArrayBuffer(100)
var y = new DataView(x)
y.setUint32(0, 1)
console.log(y.getUint32(0)) // 1
console.log(x[0]) // undefined
Run Code Online (Sandbox Code Playgroud)
但是,在使用 DataView 操作 ArrayBuffer 之后,您似乎无法直接访问 ArrayBuffer 上的任何字节。
尝试使用 ArrayBuffer 和 DataView 进行其他操作时,我感到困惑:
var x = new ArrayBuffer(100)
var y = new DataView(x)
y.setUint32(0, 1)
y.setUint32(1, 2) …Run Code Online (Sandbox Code Playgroud) 在 emscripten C++ 中,我有
class MyClass {
public:
MyClass() {}
std::shared_ptr<std::vector<uint8_t>> buffer;
int getPtr() {
return (int)(buffer->data());
}
int getLength() {
return buffer->size();
}
};
EMSCRIPTEN_BINDINGS() {
class_<MyClass>("MyClass").constructor()
.function("getLength",&MyClass::getLength)
.function("getPtr",&MyClass::getPtr,
allow_raw_pointers());
}
Run Code Online (Sandbox Code Playgroud)
我可以从 JS 调用 getLength() 和 getPtr() 但我不知道如何让 JS 将其视为 ArrayBuffer 以作为 Blob 下载。
如何将缓冲区数据以某种形式导入 JS,然后我可以使用类似于https://github.com/kennethjiang/js-file-download/blob/master/file-download.js 的代码下载它。
假设我有一个以下形式的结构
typedef struct {
uint32_t intensity;
uint16_t ring;
float32_t x;
float32_t y;
float32_t z;
} Point;
Run Code Online (Sandbox Code Playgroud)
(总共 18 个字节),我在 ArrayBuffer 中有一个包含数万个 18 字节结构的巨大数组。
如何有效地迭代它们而不在循环中烦躁地调用“new DataView()”构造函数?
这是在浏览器中,而不是 NodeJS。
arraybuffer ×10
javascript ×6
blob ×2
scala ×2
typed-arrays ×2
audio ×1
axios ×1
c++ ×1
collections ×1
dictionary ×1
emscripten ×1
extend ×1
html5 ×1
node.js ×1
performance ×1
reactjs ×1
struct ×1
uint8array ×1