Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 256色(8位)位图的跨距是多少?_C#_Bitmapimage_Stride_256color - Fatal编程技术网

C# 256色(8位)位图的跨距是多少?

C# 256色(8位)位图的跨距是多少?,c#,bitmapimage,stride,256color,C#,Bitmapimage,Stride,256color,关于计算步幅,这里和其他地方都有很多问题(和答案)。我有一些位图需要读入内存。如果颜色为1650万色(24位),则一切正常。然而,我只需要它们是256色(8位),当我试图加载到精确的图像中,但颜色深度较低时,它就崩溃了。我可以接受这个;除此之外,很明显,256色图像比1650万色图像小得多 那么,256色灰度(8位)图像的步幅是多少?8位图像的步幅等于图像的宽度 步幅将取决于使用的颜色格式。要获得步长值,请将像素使用的字节数乘以图像的宽度。对于8位图像,步长仅为像素宽度。这四舍五入到4的下一个倍

关于计算步幅,这里和其他地方都有很多问题(和答案)。我有一些位图需要读入内存。如果颜色为1650万色(24位),则一切正常。然而,我只需要它们是256色(8位),当我试图加载到精确的图像中,但颜色深度较低时,它就崩溃了。我可以接受这个;除此之外,很明显,256色图像比1650万色图像小得多


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

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


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

对于8位图像,步长仅为像素宽度。这四舍五入到4的下一个倍数。例如,如果图像宽度为198像素,则步幅为200。

实际上没有定义步幅应该是什么。一般来说,如前所述,它是四舍五入到下一个四的倍数的宽度,但实际上并没有任何标准要求它

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


如果您已经以字节数组的形式获得了实际的图像数据,那么您当然可以将其除以高度。

嗯,这显然是不正确的。步幅不能假定为图像宽度。