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

Tam*_*lei 14 wpf image

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

Ale*_*x F 21

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

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

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

  • 是的,这是以字节为单位的像素大小.BitmapSource.Format属性返回PixelFormat结构.例如,Bgr32的像素大小为4,对于Bgr24-3,对于Gray8-1等.将位图数据复制到数组,您需要知道确切的结果数组结构,并且它由Format属性定义. (7认同)
  • @odalet - 实际上,你的步幅计算也许可以用GDI +,但WPF BitmapSource是错误的.使用BitmapSource.CopyPixels,您不能添加32位填充.亚历克斯的答案是正确的,WPF只是PixelWidth*BitsPerPixel (3认同)
  • 那么我想那是像素大小(以字节为单位)吗? (2认同)