c-bmp 24位文件格式的蓝色通道



我想在24位bmp图像上找到蓝色区域。我怎样才能找到蓝色频道?访问蓝色通道的方法是什么?

24位位图(.bmp)图像的标头为54字节。之后是像素数据。每个像素使用3个字节:蓝色、绿色、红色,按顺序排列。

要看到这一点,在油漆中制作一个1x1像素的图像,并将一个像素变成蓝色。如果在六进制编辑器中查看.bmp文件,您会看到第55个字节的值为FF(蓝色),而之后的2个字节为00(没有绿色,也没有红色)。当然,如果您编写一个读取所有字节的C程序,您也可以看到这一点。如果您打印从第55个字节到最后的值,您会看到相同的结果。

像素数据需要对齐,这被称为步幅。步幅计算如下:

stride = (width * bpp) / 8;

在3x3 bmp中,步幅为(3*24)/8=9。这个值需要四舍五入到一个可以被4整除的数字(在这种情况下是12),所以每行需要3个额外的字节才能正确对齐这些位。因此,如果所有字节都是蓝色的,那么在54字节之后,您将拥有:

FF 00 00 FF   00 00 FF 00   00 00 00 00
FF 00 00 FF   00 00 FF 00   00 00 00 00
FF 00 00 FF   00 00 FF 00   00 00 00 00

对于4x4 bmp,步长=(4*24)/8=12。12可以被4整除,因此不需要额外的字节。对于5x5 bmp,步幅=(5*24)/8=15,因此每行需要1个额外的字节。

要了解有关bmp文件格式的更多信息,请查看此维基百科页面。希望这能有所帮助!

24位像素(24bpp)格式支持16777216种不同颜色并且每3个字节存储1个像素值。每个像素值定义像素的红色、绿色和蓝色样本(RGBAX中的8.8.8.0.0符号)。具体按顺序(蓝色、绿色和红色,每个8位每个样本)。

从这里。

最新更新