2012-02-21 409 views
0

我有一个简单的图像,存储宽度,高度,像素格式和其他一些我不确定的事情,然后是像素数据。使用RGBA32像素格式计算图像像素阵列的尺寸

我已经被告知像素格式是RGBA32,而其余的数据只是像素数据。

计算它的公式是什么? 根据我的理解,每个RGBA颜色需要8位,因此每个像素需要4个字节。

那么我会得出像素数组的大小是宽*高* 4,但这还不够。

+0

你怎么知道这是不够的?你为什么不发布你拥有的额外数据? – Gabe 2012-02-21 04:24:44

+0

谁给了你这张图片?如果这是一种特定的图像格式,我猜测可能有某种标题或校验和或元数据或注释。 – userx 2012-02-21 04:28:41

+0

我的宽度和高度为64 * 64,总像素数据大小为21760.当我读取21760字节并显示它时,它看起来很好。当我只读64 * 64 * 4时,这是错误的。 – MxyL 2012-02-21 04:31:46

回答

1

64px乘64px BMP和RGBA32通常是16440字节(假设BITMAPV3INFOHEADER)。头部56字节,像素数据16384字节(64 * 64 * 4)。 header size can vary though并且假定标准BMP为124字节(BITMAPV5HEADER)。

我猜想,你有一个或多个以下的要占你的额外〜5376(21760 - 16384)字节:

  • 完整性检查(S)(校验,CRC等)
  • 较长的头部比您目前假设
  • 像素对准这不是4字节
  • 元数据(注释,EXIF数据,GPS数据等)
  • ICC色彩配置文件
  • 数据间隙

在任何情况下,我会先检查最后 16384(64×64×4)字节的数据中的哪一个有可能其中图像数据是(如果这种格式在所有需要后BMP格式,并且没有一些尾随元数据或ICC配置文件或完整性检查)。在旁注中,RGBA数据通常首先与alpha字节一起存储(ARGB)。

为了熟悉一个常见的图像格式的结构,可能需要看看这个diagram of the BMP file format