我正在做一些在 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;
我现在想做同样的事情,但从左到右读取数据并获取其中包含可见数据的第一条垂直像素线。问题是位图数据被“展平”并排成一行,如果你愿意的话,我不知道该怎么做。
有人对我如何做到这一点有任何见解吗?