0

我正在做一些在 C# 中处理位图的工作,并且我正在使用BitmapData一个byte指针来使其尽可能快。下面的代码在从上到下读取时垂直查找第一条水平像素线,其中包含可见数据(即 alpha 值 == !0):

var rectangle = new Rectangle(0, 0, 590, 590);
BitmapData data = logo.LockBits(rectangle, ImageLockMode.WriteOnly, logo.PixelFormat);

var bmpBytes = (byte*)data.Scan0;
int nOffset = data.Stride - logo.Width * 4;

for (int y = 0; y < height; y++)
{
    for (int x = 0; x < width; x++)
    {
        if (bmpBytes[3] > 0)
        {
            bmpBytes -= (y * x);
            return y;
        }
        bmpBytes += 4;
    }

    bmpBytes += nOffset;
}

return -1;

我现在想做同样的事情,但从左到右读取数据并获取其中包含可见数据的第一条垂直像素线。问题是位图数据被“展平”并排成一行,如果你愿意的话,我不知道该怎么做。

有人对我如何做到这一点有任何见解吗?

4

0 回答 0