【发布时间】:2014-03-19 21:14:44
【问题描述】:
我们在客户端上有一个二进制文件。它是从书中扫描的页面,以某种方式压缩到客户端。我们有一个解码器(在客户端),它输出一个包含 BMP 数据文件的 TypedArray。我们需要尽可能快地渲染它。 BMP 大小约为 3000000 字节(解码后为返回的 typedArray 的长度)。我们尝试了很多解决方案,但在速度较慢的 PC 上它不起作用。例如我们发现的最快方法:我们从 TypedArray 构建 blob。创建此 blob 的 URL 并将其指定为图像源上的 src 属性。渲染 20 个页面大约需要 22000 毫秒。我们还尝试使用 data: 在 src 标记中指定的 URL(34000 毫秒)在 base64 中呈现它。我们试图在画布上渲染它。但是存在一些问题,例如我们在画布上使用 drawImage 需要加载图像对象。可能是我们如何使用带有硬件加速的 WebGL 渲染它?
PS 中包含的解码时间在所有情况下都是相同的。
PS 我可以附上我们尝试过的代码示例。
【问题讨论】:
-
如果文件那么大并且您想完全加载它,我认为没有什么可做的。也许您可以尝试使用Zoomify 之类的方法来改变解决问题的方法
-
黑白页。我不确定颜色数据,但如果它非常重要,可以检查 bmp 标头。
-
MarcoCI,也许我可以用低分辨率重建它?但我担心它会太慢。因为我们需要在客户端做所有事情。
标签: javascript canvas binary webgl blob