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