我正在尝试在浏览器上从头开始创建一个GIF图像。这一切都是有效的,但它需要大量的时间来建立一个让人感觉平淡无奇的小形象。(高端处理器上100帧的300x200的速度为2.6s)
目前,我正在将所有数据连接到一个简单的Array中,并在完成后将所有内容转换为Uint8Array。我猜使用Uint8Array会有更好的内存和效率,但是我不知道如何在创建数据时将其连接起来。
我每次都尝试重新创建Uint8Array,但它明显降低了性能。我试着使用Stream,但从来没能让它工作。
// kinda concat
stream = new Uint8Array([
...stream,
...graphicControlExtension,
...imageDescriptor,
]);MDN Stream的例子很让人困惑,所以如果有人能给我指出正确的方向,那就太好了。=D
发布于 2019-11-22 22:14:23
uint8stream = new Uint8Array([]);
uint8stream.set(stream);
uint8stream.set(graphicControlExtension, stream.length);
uint8stream.set(imageDescriptor, stream.length + graphicControlExtension.length);否则,您应该先转换它们
UPD:要提升它,您可以:
1)尝试使用push而不是concat
2)尽量使用lodash.concat (比Array.prototype.concat快)
3)编写您自己的concat方法,就像this文章中那样
https://stackoverflow.com/questions/58995872
复制相似问题