对于假问题我很抱歉,但我是新手,我找不到答案。
步幅计算为bitFrame.PixelWidth * ((bitFrame.Format.BitsPerPixel + 7) / 8);
然后我使用bitFrame.CopyPixels(pixels, stride, 0); //(byte[] pixels)
并且我具有处理当前像素(即结构)的功能。
struct pixel {
float r;
float g;
float b;
};
还有像素处理函数像素processPixel(int x, int y)
。我如何在缓冲区中使用此功能?我认为必须以某种方式调用它:
for(int i = 0; i < height; i++) {
for(int j = 0; j < height; j++) {
processPixel(i, j);
// But how could I use this function with my byte[] buffer?
// And what exactly in this buffer?
// (why stride*height = 4*width*height? cause there are 3 values for pixel RGB)
}
}
答案 0 :(得分:0)
Stride是每行像素的字节数,无论这些像素中有多少是图像的一部分,因此您必须使用步幅来计算基于二维坐标影响的字节:
void processPixel(int x, int y)
{
// This is if your image format is 4 bytes per pixel such as RGBA
int startByteIndex = x * 4 + y * stride;
}
编辑:我太匆忙了 - 根据评论回答更新。