Я пытаюсь получить все пиксели изображения, используя 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, так как это лучший способ получить пиксели. Любая помощь?
Спасибо.
Pixels
не определено. Сначала начните с простого формата (16bpp или 32bpp), так как проще обрабатывать пиксели, которые напрямую отображаются наshort
илиint
. - person Alexei Levenkov   schedule 05.05.2014bmp.GetPixels(i,j)
Цвет [A=255, R=15, G=18, B=23]LockBits
23 18 15... Я тут что-то не так делаю. (Я обновил свой код для получения дополнительной помощи. - person Rynoh97   schedule 05.05.2014PixelFormat Pixels = PixelFormat.Format32bppArgb;
, и все же мои числа не совпадают? Это мой GetPixels неверен? - person Rynoh97   schedule 05.05.2014