当我即将调查Java中BufferedImage类的内部实现时,我遇到了DataBuffer。 DataBuffer最终用于保存空白图像数据,只能使用相关的ColorModel和SampleModel实现进行解释。但是,除了事实之外,我不明白DataBuffer的真正目的,即它使用一些读写助手来包装相同类型的数组。
答案 0 :(得分:1)
DataBuffer
是一种抽象,因此BufferedImage
不需要知道实际的像素存储。
像素通常存储在数组中,但它可以是单个打包或交错的数组,也可以是单个或多个带状数组。将其与所支持的传输类型数相乘,您将看到需要处理的许多不同情况。将此委托给专门的实现是很有意义的,并避免在BufferedImage
本身中了解所有这些不同的类型。
但它根本不必是一个阵列。例如,我已经成功实现了由nio DataBuffer
和内存映射文件支持的ByteBuffer
。