当我要研究Java中BufferedImage类的内部实现时,遇到了DataBuffer。最后使用DataBuffer保存空白图像数据,只能使用相关的ColorModelSampleModel实现对其进行解释。但是,除了事实之外,我不理解DataBuffer的真正目的,因为它用一些读写助手包装了相同类型的数组。

最佳答案

DataBuffer是一种抽象,因此BufferedImage不需要了解实际的像素存储。

像素通常存储在阵列中,但是可以是单个打包或交错的阵列,也可以是单个或多个带状阵列。将其乘以支持的传输类型的数量,您将看到有很多不同的情况需要处理。将其委托给专门的实现是很有意义的,并且避免对BufferedImage本身具有所有这些不同类型的知识。

但这甚至根本不必是数组。例如,我已经成功实现了由nio DataBuffer和内存映射文件支持的ByteBuffer

09-11 21:01