BitmapSource.CopyPixels - 步幅有什么好处?

时间:2010-10-07 12:58:27

标签: wpf image

我正在尝试从WPF BitmapSource对象获取像素数据。据我了解,这可以通过调用其CopyPixels方法来完成。这个方法需要一个stride参数,我不知道如何获取。据我所知,stride是在读取或复制期间踩入数组时使用的值。任何BitmapSource的适当步幅值是什么?

2 个答案:

答案 0 :(得分:20)

您可以使用stride = pixel_size * image_width值。例如,对于具有100像素宽度的RGBA位图,stride = 400。

某些应用程序可能需要特殊的行对齐。例如,Windows GDI位图需要32位行对齐。在这种情况下,对于宽度= 33的RGB位图,应将步幅值33 * 3 = 99更改为100,以在目标数组中进行32位行对齐。

通常,您应该了解目标阵列要求。在没有特殊要求的情况下,使用默认的pixel_size * image_width。

答案 1 :(得分:0)

var stride = ((bitmapSource.PixelWidth * bitmapSource.Format.BitsPerPixel + 31) / 32) * 4;

var stride = ((bitmapSource.PixelWidth * bitmapSource.Format.BitsPerPixel + 31) >> 5) << 2;