0

Bitmap と GetPixels を使用して、画像内のすべてのピクセルを取得しようとしています。非常に非効率的であることがわかったので、LockBits を調べています。ビットをロックすると思われるものを作成しましたが、すべてのピクセルを取得できません。これまでの私のコードは...

//Creates Rectangle for holding picture
Rectangle bmpRec = new Rectangle(0, 0, bmp.Width, bmp.Height); 

BitmapData bmpData = bmp.LockBits(bmpRec, ImageLockMode.ReadWrite, bmp.PixelFormat); 

IntPtr Pointer = bmpData.Scan0; //Scans the first line of data

int DataBytes = Math.Abs(bmpData.Stride) * bmp.Height; //Gets array size

byte[] rgbValues = new byte[DataBytes]; //Creates array
string Pix = " ";
Marshal.Copy(Pointer, rgbValues, 0, DataBytes); //Copies of out memory

bmp.UnlockBits(bmpData);

for (int p = 0; p < DataBytes; p++)
{
     Pix += " " + rgbValues[p];
}

ピクセルを取得する最良の方法であるため、Lockbits を使用したいと思います。何か助けはありますか?

ありがとうございました。

4

1 に答える 1

0

LockBits から直接データにアクセスする場合、格納順序は RGB ではなく BGR です。そのため、逆の順序で値を取得しています。

于 2017-01-12T17:49:11.430 に答える