单色位图

时间:2010-06-29 10:59:40

标签: image scala bitmap monochrome

应该很容易。

我正在研究Scala试图处理长序列的二进制数据。这是0和1的长列表。存储/访问此类数据的“最佳”方式是什么。

这里重点是内存优化,所以我想避免使用整个字节来存储布尔值。访问也很重要,所以我想避免将它们放入字节然后放入数组。

BitMap是个好主意吗? scala中有这样的类吗?

如果没有,最好使用ByteArray吗?你会如何实现这个?

还有其他想法吗?

谢谢,

2 个答案:

答案 0 :(得分:2)

你可以使用java.util.BitSet(如果有聪明的解释,可能还有一些,以使它更像Scala)。

如果这仍然太昂贵,我会编写一个内部使用数组的类,并将这些位打包成整数或字节。

答案 1 :(得分:2)

如果您的值不均匀分布(明显多于0),则可以使用run-length encoding对图像数据进行编码。这是传真使用的编码。

有两种编码选项:

  • 将RLE用于黑白
  • 仅使用RLE作为一种颜色,如果编码其他颜色(或混合部分),则使用直接编码