如何有效地连接Uint8Array?

问题描述 投票:0回答:1

我正在尝试在浏览器上从头开始创建GIF图像。一切都可以,但是要花很多时间来构建令人难以置信的小图像。 (对于在高端proc上具有100帧的300x200,为2.6秒)

当前,我将所有数据连接到一个简单的Array中,并在完成后将所有内容都转换为Uint8Array。我猜想使用Uint8Array将是更好的内存和效率明智的选择,但是我在创建数据时并没有弄清楚如何连接我的数据。

我试图每次都重新创建Uint8Array,但显然会降低性能。我尝试使用Stream,但从未设法使其正常工作。

// kinda concat
stream = new Uint8Array([
    ...stream,
    ...graphicControlExtension,
    ...imageDescriptor,
]);

MDN Stream示例只是令人困惑,因此,如果有人可以将我指向正确的方向,那就好了。 = D

javascript performance memory gif typed-arrays
1个回答
0
投票

如果所有变量都是uint 8数组(流,graphicControlExtension,imageDescriptor),请使用set方法。

uint8stream = new Uint8Array([]);
uint8stream.set(stream);
uint8stream.set(graphicControlExtension, stream.length);
uint8stream.set(imageDescriptor, stream.length + graphicControlExtension.length);

否则,您应该先将其转换

© www.soinside.com 2019 - 2024. All rights reserved.