【发布时间】:2020-01-15 10:41:57
【问题描述】:
我正在编写一个数据可视化应用程序,它需要我处理非常大的 2D 数据数组并将该数据转换为按比例缩小的图像,以便在 DOM 的画布中显示。
我遇到了 DOM 画布大小限制。我的数组可以大到 5000 x 5000。我想通过使用createImageBitmap() 同时缩小并将大数组转换为更小尺寸的ImageBitMap 来解决画布大小限制 - 256 x 256 - 以插入屏幕上的画布。
如何将原始数组数据转换为正确的格式?这种方法行得通吗?
【问题讨论】:
-
你的二维数组中的原始数据是什么,你能详细说明一下吗?
-
隔离起来有点困难。我目前的方法是:1)将数组绘制到相同大小的 OffScreenCanvas 中。 2) 在较小的目标画布上调用 drawImage() - 256 x 256,它执行缩小和复制。对于大约 4K x 4K 的大数组,永远不会写入目标画布。没有错误。低于这个尺寸它工作正常。
-
您可能会通过算法减少数据,这与您当前拥有的数据相差了一点点,但是例如将每个 2x2 像素块平均到一个像素的颜色值将是像素数的四分之一。
-
是的,我同意。 “正确”的方法是对数组数据进行下采样并将其交给目标画布。我希望使用成像功能获得“免费”下采样,而不是自己滚动,
标签: javascript canvas imagebitmap