256色(8位)位图的步幅是什么?

时间:2013-05-24 17:31:44

标签: c# bitmapimage stride 256color

这里和其他地方有很多关于计算步幅的问题(和答案)。我有一些我需要读入内存的位图。一切正常IFF它们是1650万种颜色(24位)。但是,我只需要它们是256色(8位),当我试图加载精确的图像时,但是颜色深度较低,它会爆炸。我可以忍受这个;除了显然,256色图像比1650万色图像小很多。

那么,256色灰度(8位)图像的步幅是什么?

3 个答案:

答案 0 :(得分:1)

8位图像的步幅等于图像的宽度。

步幅取决于所使用的颜色格式。要获得步幅值,请将像素使用的字节数乘以图像的宽度。

答案 1 :(得分:1)

对于8位图像,步幅就是宽度(以像素为单位)。这会四舍五入为4的下一个倍数。例如,如果图像宽度为198像素,则步幅为200.

答案 2 :(得分:0)

实际上没有什么能够确定步幅应该是什么。一般来说,如上所述,宽度向上舍入到下一个四的倍数,但实际上没有任何标准强制执行。

完全确定的唯一方法就是从图像中请求它。没有提供有关如何访问图像数据的信息,但标准方法是创建图像的Bitmap对象,并使用bitmap.LockBits函数获取BitmapData宾语。在这种情况下,Stride只是该BitmapData对象的属性。

如果你以某种方式将实际的图像数据作为字节数组,你当然可以将它除以高度。